我想通過單擊 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

解决方案 »

  1.   

    Dim allco As New Collection
    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