Q&A

  • VB를 델루 포팅중 막히는 곳이 있어서 질문함당...^^;;
하여 고수님들 ^^

제가 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



2  COMMENTS
  • Profile
    왕초보 2001.02.16 02:51
    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



    비베 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 를 기준으로

    구별 할수 있습니다...



  • Profile
    사발우성 2001.02.16 17:40
    답변 감솨여.....^^

    오늘도 존하루 보내시길.....



    왕초보 wrote:

    > 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

    >

    > 비베 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 를 기준으로

    > 구별 할수 있습니다...

    >