하여 고수님들 ^^
제가 VB를 델루 포팅 하구 있는데여 막히는 곳이 있어서리. 이렇게 질문 함당..
아래의 for 문좀 설명좀 부탁드림당...^^;;
Sub Combo3_Click ()
Dim tbl As table
Dim ds As dynaset
Dim sql As String
Dim i As Integer, j As Integer
.
.
.
.
.
max_cnt = list2.ListCount
cur_cnt = 0
For i = 0 To list1.ListCount - 1
If list1.ItemData(i) = 1 Then
sql = "select * from mecha_assy "
sql = sql & "where sr_jp_serial_no = '" & Left(list1.List(i), 10) & "'"
Set ds = chulhadb.CreateDynaset(sql)
Do While Not ds.EOF
ds.Delete
ds.MoveNext
Loop
ds.Close
End If
list1.RemoveItem i
Next i
text1.SetFocus
End Sub
If list1.ItemData(i) = 1 Then
sql = "select * from mecha_assy "
sql = sql & "where sr_jp_serial_no = '" & Left(list1.List(i), 10) & "'"
Set ds = chulhadb.CreateDynaset(sql)
Do While Not ds.EOF
ds.Delete
ds.MoveNext
Loop
ds.Close
End If
list1.RemoveItem i
Next i
비베 3.0 이전 버전에서 사용하던 구 DAO 코드 같은데여....
CreateDynaset 는 현재는 OpenRecordset 메소드로 대치 되었는데.
해당 쿼리를 수행 하게 됩니다.....
결국 리스트 박스의 해당 아이템에 속하는 sr_jp_serial_no 를 select 해서 커서를 연후
각 레코드 별로 순차적으로 지우는 내용같은데요.......
해당 레코드가 지워지면 리스트박스에서도 아이템을 제거 해주고요....
요즘은 저런 구식의 코드는 사용하지 않아서요...
그냥 DELETE FROM mecha_assy WHERE where sr_jp_serial_no = '" & Left(list1.List(i), 10)
하고 쿼리를 수행하면 같은 결과가 나오지 않을까여......
굳이 조건에 해당하는 로우를 모두 지울거면 SELECT 해서 레코드를 연후 지울 필요가
없을것 같은데여......
list1.ItemData(i) 에서 ItemData 속성은 컴보박스에 보여주는 항목의 문자열에
대응하는 long 값으로....
Me.Combo1.AddItem "TEST"
Me.Combo1.AddItem "TEST"
Me.Combo1.AddItem "TEST"
Me.Combo1.AddItem "TEST"
Me.Combo1.ItemData(0) = 101
Me.Combo1.ItemData(1) = 102
Me.Combo1.ItemData(2) = 103
Me.Combo1.ItemData(3) = 104
이렇게 사용 됩니다.... 그러면 항목의 문자열이 같은경우도 ItemData 를 기준으로
구별 할수 있습니다...