我想通過單擊 Combo_khxz 後向Combo_lb添加數據,而Combo_lb中的內容是有重復的。我想通過下面的 " '過濾數據 "來過濾數據,不但過濾不好,還老 是有前面的內容殘留下來。(combo2是用來作交換數據的.比如Combo_khxz有:a,b,c;則Combo_lb對應的內容有:a1,a1,a2,a2,a3;b1,b2,b2;c1。我希望在Combo_khxz選 a 後,combo_lb 中的內容只顯示:a1,a2,a3)
請問我應如何解決:
Private Sub Combo_khxz_Click()
'' clear all
Dim i, j, k, x, aa As Integer
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase("E:\shui3_sy_printer\客戶性質2.mdb")
Set rs = db.OpenRecordset("客戶資料") Combo_lb.Clear: Combo_khmc.Clear
MyClear
'加載數據
For i = 0 To rs.RecordCount
If rs.Fields(0) = Combo_khxz.Text Then
Combo_lb.AddItem rs.Fields(1)
End If
rs.MoveNext
Next
'過濾數據
Combo2.AddItem Combo_lb.List(0)
For i = 1 To Combo_lb.ListCount
aa = 0
For j = 0 To Combo2.ListCount
If Trim(Combo_lb.List(i)) = Trim(Combo2.List(j)) Then
GoTo aaexit
Else
aa = 1
End If
Next
If aa = 1 Then
Combo2.AddItem Combo_lb.List(i)
aa = 0
End If
aaexit:
Next
Combo_lb.Clear
For k = 0 To Combo2.ListCount
Combo_lb.AddItem Combo2.List(k)
Next
End Sub
請問我應如何解決:
Private Sub Combo_khxz_Click()
'' clear all
Dim i, j, k, x, aa As Integer
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase("E:\shui3_sy_printer\客戶性質2.mdb")
Set rs = db.OpenRecordset("客戶資料") Combo_lb.Clear: Combo_khmc.Clear
MyClear
'加載數據
For i = 0 To rs.RecordCount
If rs.Fields(0) = Combo_khxz.Text Then
Combo_lb.AddItem rs.Fields(1)
End If
rs.MoveNext
Next
'過濾數據
Combo2.AddItem Combo_lb.List(0)
For i = 1 To Combo_lb.ListCount
aa = 0
For j = 0 To Combo2.ListCount
If Trim(Combo_lb.List(i)) = Trim(Combo2.List(j)) Then
GoTo aaexit
Else
aa = 1
End If
Next
If aa = 1 Then
Combo2.AddItem Combo_lb.List(i)
aa = 0
End If
aaexit:
Next
Combo_lb.Clear
For k = 0 To Combo2.ListCount
Combo_lb.AddItem Combo2.List(k)
Next
End Sub
Dim allco1 As New Collection
Function cfliter(item As Variant) As Boolean
Dim i As Integer
If allco.Count = 0 Then
allco.Add item
cfliter = True
Exit Function
End If
For i = 1 To allco.Count
If item = Trim(allco.item(i)) Then
cfliter = False
Exit Function
End If
Next i
allco.Add item
cfliter = True
End FunctionPrivate Sub Combo1_Click()
Dim i As Integer
Set allco1 = Nothing
Set allco = Nothing
Combo3.Clear
For i = 0 To Combo2.ListCount
If Combo2.List(i) Like Combo1.List(Combo1.ListIndex) & "*" Then
allco1.Add Trim(Combo2.List(i))
End If
Next i
For i = 1 To allco1.Count
If cfliter(allco1.item(i)) Then
Combo3.AddItem allco1.item(i)
End If
Next i
If Combo3.ListCount > 0 Then Combo3.ListIndex = 0
End Sub
Private Sub Form_Load()
Combo1.AddItem "a"
Combo1.AddItem "b"
Combo1.AddItem "c"
Combo1.ListIndex = 0
Combo2.AddItem "a1"
Combo2.AddItem "a2"
Combo2.AddItem "a1"
Combo2.AddItem "a2"
Combo2.AddItem "a3"
Combo2.AddItem "a4"
Combo2.AddItem "a4"
Combo2.AddItem "b1"
Combo2.AddItem "b2"
Combo2.AddItem "b3"
Combo2.AddItem "c1"
Combo2.ListIndex = 0
End Sub