1

表1

ID Division Dept

001 CS IT
002 CD Admin
003 AS Admin

重複する値なしでリストボックスに部門をロードしたい

試したコード

Dim rdoRs As New ADODB.Recordset
Dim record As Variant
Dim Div As Variant
Dim usr, MySQL As String
usr = "CD,AS,"
record = Split(usr, ",")
For Each Div In record
MySQL = "Select Distinct dept from table1 Where division = '" & div & "'"
   rdoRs.Open MySQL, conn1
   If rdoRs.RecordCount > 0 Then
      Do While Not rdoRs.EOF
         listbox1.AddItem rdoRs!dept
           rdoRs.MoveNext
           Loop
   End If
   rdoRs.Close
Next

出力

Listbox1

Admin 'Loaded for CD Division
Admin 'Loaded for AS Division

上記のコードは正常に機能していますが、管理部門の2倍の負荷がかかっています。リストボックスに。For LoopはCDの部門管理者をロードしており、AS部門の部門管理者もロードしているためです。

リストボックスに重複する値を表示したくありません。

期待される出力

Listbox1

Admin  'Loaded for both CD and AS Division

VB6でこれを行う方法。

VB6コードのヘルプが必要です。

4

2 に答える 2

1

それがすでにリストにあるかどうかをチェックする関数を書いてください...

Public Function FindInList(theList as ListBox, theString as String)
    Dim i as Integer
    theString = LCase(Trim(theString))

    For i = 0 to theList.ListCount - 1
        If LCase(Trim(theList.List(i))) = theString then
            FindInList = i
            Exit Function
        End If
    Next i

    FindInList = -1
End Function

そして、リストに物事を追加したいときは、ただ...

If FindInList(List1, StringToAdd) = -1 Then List1.AddItem(StringToAdd)
于 2012-07-16T05:22:53.707 に答える
0

クエリでこれを行うことができます

変化する

MySQL = "Select dept from table1 Where division = '" & div & "'" 

のようなものに

MySQL = "Select DISTINCT dept from table1 Where division = '" & div & "'" 
于 2012-07-16T04:55:09.577 に答える