선배님들 염치 불구하고 도움을 부탁드립니다.
VBA로 DB에서 불러온 TEXT 데이터를 Move할때 Move한 좌표값이 DB에도 자동으로 변경되도록 하고 싶은데 방법이 없을까요?
코드는 아래와 같습니다.
‘———————————————————————————————————————————–
Private Sub UserForm_Activate()
Unload Me
End Sub
‘———————————————————————————————————————————–
Private Sub UserForm_Initialize()
Dim handle_info As String
Dim ado_conn As New ADODB.Connection
Dim ado_rs As New ADODB.Recordset
Dim filterset As AcadSelectionSet
Dim FilterEnt As Object
Dim FilterObj As Variant
Dim objectname As String
On Error Resume Next
If thisdrawing.SelectionSets(“sset”) Then _
thisdrawing.SelectionSets(“sset”).Delete
On Error GoTo 0
On Error Resume Next
connectionstring = “Provider=*******.1;Password=**********,User ID=*****;Data Source=*****;Persist Security Info=True”
Set db = New ADODB.Connection
db.Open connectionstring
Set filterset = thisdrawing.SelectionSets.Add(“sset”)
filterset.SelectOnScreen
For Each FilterEnt In filterset
handle = FilterEnt.handle
Next
ado_conn_bl.Open connectionstring
ado_rs_bl.Open “select * from test_info where handle_bl='” + handle + “‘ or handle_fl='” + handle + “‘ or handle_su='” + handle + “‘ or handle_area='” + handle + “‘”, ado_conn_bl
handle = ado_rs_bl.Fields!handle_line
ado_conn_bl.Close
db.Execute query
‘객체 필터링 및 handle_line 값으로 객채 선택
Dim mode As Integer
mode = acSelectionSetCrossing
Dim gpCode(0) As Integer
Dim dataValue(0) As Variant
gpCode(0) = 0
dataValue(0) = “text”
Dim Groupcode As Variant, dataCode As Variant
Groupcode = gpCode
dataCode = dataValue
Dim bl_del_cox As Double
Dim bl_del_coy As Double
Dim bl_del_point1(0 To 2) As Double
Dim bl_del_point2(0 To 2) As Double
ado_conn_bl.Open connectionstring
ado_rs_bl.Open “select * from test_info where handle_line='” + handle + “‘”, ado_conn_bl
If Not IsNull(ado_rs_bl.Fields!bl_txt_cox) Then
bl_del_cox = ado_rs_bl.Fields!bl_txt_cox
End If
ado_conn_bl.Close
ado_conn_bl.Open connectionstring
ado_rs_bl.Open “select * from test_info where handle_line='” + handle + “‘”, ado_conn_bl
If Not IsNull(ado_rs_bl.Fields!bl_txt_coy) Then
bl_del_coy = ado_rs_bl.Fields!bl_txt_coy
End If
ado_conn_bl.Close
bl_del_point1(0) = bl_del_cox – 200: bl_del_point1(1) = bl_del_coy + 400: bl_del_point1(2) = 0
bl_del_point2(0) = bl_del_cox + 200: bl_del_point2(1) = bl_del_coy – 1900: bl_del_point2(2) = 0
filterset.Select mode, bl_del_point1, bl_del_point2, Groupcode, dataCode
‘DB_Update
Dim bl_point(0 To 2) As Double
Dim fl_point(0 To 2) As Double
Dim su_point(0 To 2) As Double
Dim area_point(0 To 2) As Double
Dim x_p As Variant
Dim y_p As Variant
Dim bl_del As Integer
ado_conn_bl.Open connectionstring
ado_rs_bl.Open “select * from test_su where handle_id='” + handle + “‘”, ado_conn_bl
x_p = ado_rs_bl.Fields!cox
ado_conn_bl.Close
ado_conn_bl.Open connectionstring
ado_rs_bl.Open “select * from test_su where handle_id='” + handle + “‘”, ado_conn_bl
y_p = ado_rs_bl.Fields!coy
ado_conn_bl.Close
db.Execute query
Dim bl_cox As String
Dim bl_coy As String
Dim fl_cox As String
Dim fl_coy As String
Dim su_cox As String
Dim su_coy As String
Dim area_cox As String
Dim area_coy As String
bl_point(0) = x_p: bl_point(1) = y_p + (font_height * 1.7): bl_point(2) = 0
fl_point(0) = x_p: fl_point(1) = y_p + (font_height * 0.4): fl_point(2) = 0
su_point(0) = x_p: su_point(1) = y_p – (font_height * 0.8): su_point(2) = 0
area_point(0) = x_p: area_point(1) = y_p – (font_height * 2.1): area_point(2) = 0
bl_cox = CDbl(Val(bl_point(0)))
bl_coy = CDbl(Val(bl_point(1)))
fl_cox = CDbl(Val(fl_point(0)))
fl_coy = CDbl(Val(fl_point(1)))
su_cox = CDbl(Val(su_point(0)))
su_coy = CDbl(Val(su_point(1)))
area_cox = CDbl(Val(area_point(0)))
area_coy = CDbl(Val(area_point(1)))
‘편집 시작
Dim Point As Variant
Point = thisdrawing.Utility.GetPoint(, “원하는 좌표위치를 클릭하세요”)
For Each FilterObj In filterset
FilterObj.Move bl_del_point1, Point
‘ FilterObj.Copy
‘ FilterObj.Erase
thisdrawing.Application.Update
‘ thisdrawing.SelectionSets(“sset”).Delete
Next
MsgBox bl_cox
query = “edit test_info set bl_txt_cox= ‘” + bl_cox + “‘, bl_txt_coy = ‘” + bl_coy + “‘, fl_txt_cox ='” + fl_cox + “‘” & _
“, fl_txt_coy='” + fl_coy + “‘, su_txt_cox='” + su_cox + “‘, su_txt_coy='” + su_coy + “‘, area_txt_cox='” + area_cox + “‘, area_txt_coy='” + area_coy + “‘”
db.Execute query
End Sub
‘———————————————————————————————————————————–
CAD상에서 객체는 이동하지만 DB 상의 좌표데이터는 바뀌지가 않네요.