我有2個列表框,lbA和lbB。我使用SQL腳本填充lbA,它工作正常。現在我想要做的是當我從lbA中選擇一個項目時,lbB會從SQL腳本中再次填充。它只適用於從lbA中選擇一個項目但選擇兩個或更多項目或取消選擇項目,然後它添加重複項目或不刪除lbB項目。我對如何解決這個問題感到困惑。任何人都可以幫忙嗎?用戶窗體列表框填充和清除,取決於從另一個列表框中的選擇
這是迄今爲止代碼:
Private Sub lbA_Change()
Dim Num As Integer
Dim lngIndex As Long
If Me.lbA.ListIndex <> -1 Then
For lngIndex = 0 To lbA.ListCount - 1
If lbA.Selected(lngIndex) Then
Dim cnPubs As ADODB.Connection
Set cnPubs = New ADODB.Connection
Dim strConn As String
strConn = "PROVIDER=SQLOLEDB;"
strConn = strConn & "DATA SOURCE=MSSQLSERVER2008;INITIAL CATALOG=MyDB;"
strConn = strConn & " INTEGRATED SECURITY=sspi;"
cnPubs.Open strConn
Dim rsPubs As ADODB.Recordset
Set rsPubs = New ADODB.Recordset
With rsPubs
.ActiveConnection = cnPubs
.Open "My SQl Statement"
End With
If rsPubs.EOF Or rsPubs.BOF Then
Exit Sub
End If
rsPubs.MoveFirst
With Me.lbB
.Clear
Do
.AddItem rsPubs![strName]
rsPubs.MoveNext
Loop Until rsPubs.EOF
End With
rsPubs.Close
End If
Next
End If
End Sub
您需要遍歷lbA中的選定項並構建一條可用於填充lbB的SQL語句。通常情況下,這將是類似於'select fieldname from tablename where whereFieldName in('itemA','itemB','itemc')'現在您正在多次運行查詢,清除每個查詢的列表框:您需要那部分超出lbA物品運行的循環 –