本人刚学VB,遇到个问题请大家赐教。表aaa里的字段fzr的记录有a、a、b、a、c、c、a(此表并非只有fzr字段)
我想把fzr字段的值添加到combo1里去,但不能出现重复。最后得到的结果应是combo1里只有a、b、c
不能用sql语句把重复值屏蔽掉,全用代码判断实现。
我用的data控件。由于刚接触VB,对数据库操作所用的属性和方法知道的不多,所以请大家帮忙, 谢谢!

解决方案 »

  1.   

    Public Sub CmbClass(CmbName As ComboBox)   '从参数表取出信息放到ComboBox控件中
        Dim strSql As String
        If rsClass.State Then rsClass.Close
        strSql = "SELECT distinct fzr FROM aaa "
        rsClass.Open strSql, Cn, adOpenStatic, adLockReadOnly
        With CmbName
            .Clear
            Dim n As Integer
            n = 0
            Do While Not rsClass.EOF
                .AddItem Trim(rsClass!Description)
                .ItemData(n) = Trim(rsClass!Code)
                n = n + 1
                rsClass.MoveNext
            Loop
            .ListIndex = 0
        End With
    End Sub
      

  2.   

    To  icedut(冰) 你用的是ADODB.Recordset吧
    用data控件好实现吗 如果好实现麻烦你再写个例子 谢谢
      

  3.   

    还有 你写的SQL语句就把重复值屏蔽掉了 
    我是想问不用SQL语句屏蔽重复值,单纯地自己写代码控制添加怎么写?
      

  4.   

    在窗体上添加data、command、combo控件Private Sub Command1_Click()
    Dim a, b, c As Integer
    a = 0
    b = 0
    c = 0
    Do While Not Me.Data1.Recordset.EOF
    Select Case Me.Data1.Recordset.Fields("fzr").Value
    Case "a"
    For i = 0 To Me.Combo1.ListCount - 1
    If Me.Combo1.List(i) = "a" Then
    a = a + 1
    End If
    Next i
    If a = 0 Then
    Me.Combo1.AddItem "a"
    End If
    a = 0
    Case "b"
    For i = 0 To Me.Combo1.ListCount - 1
    If Me.Combo1.List(i) = "b" Then
    b = b + 1
    End If
    Next i
    If b = 0 Then
    Me.Combo1.AddItem "b"
    End If
    b = 0
    Case "c"
    For i = 0 To Me.Combo1.ListCount - 1
    If Me.Combo1.List(i) = "c" Then
    c = c + 1
    End If
    Next i
    If c = 0 Then
    Me.Combo1.AddItem "c"
    End If
    c = 0
    End Select
    Me.Data1.Recordset.MoveNext
    Loop
    End SubPrivate Sub Form_Load()
    Me.Data1.DatabaseName = app.path & "\db1.mdb"
    Me.Data1.RecordSource = "aaa"
    End Sub
      

  5.   

    呵呵。好久都不用DATA做了。。废了半天劲
      

  6.   

    还有 你写的SQL语句就把重复值屏蔽掉了 
    我是想问不用SQL语句屏蔽重复值,单纯地自己写代码控制添加怎么写?舍近求远!
      

  7.   

    To  penguinMII(企鹅) 首先,谢谢你提供的代码。
    但是它有局限性,这样写是已经知道了表里都有哪些值,在不知道的情况下呢?
    拿到一张新表,并不知道里面的字段都有什么值,然后添加到combo里。 
      

  8.   

    这是我的代码With Data1
      .DatabaseName = "d:\db1.mdb"
      .RecordSource = "select * from pgd"
      .Refresh
    End With
    Data1.Recordset.MoveLast
    i = Data1.Recordset.RecordCount
    Data1.Recordset.MoveFirst
    m = Data1.Recordset.Fields("fzr")
    Combo1.AddItem (m)
    Data1.Recordset.MoveNext
    i = i - 1
    For j = 1 To i
      m = Data1.Recordset.Fields("fzr")
      v = Combo1.ListCount
      x = 0
      Do While (v > 0)
            If m = Combo1.List(v - 1) Then
          x = 0
          Exit Do
        Else
          x = 1
        End If
        v = v - 1
      Loop
      If Not Data1.Recordset.EOF Then
        Data1.Recordset.Move (1)
      End If
      If (x = 1) Then
        Combo1.AddItem (m)
      End If
    Next j