Vb6 如何向组合框添加行值

Vb6 如何向组合框添加行值,vb6,Vb6,我有一个表名'product',和product_name,category作为字段。我想将product_name行值添加到重复类别值的组合框中 product_name | category --------------+---------- Ceiling fan | fan Table fan | fan Wall fan | fan 我尝试下面的代码,但没有do w

我有一个表名'product',和product_name,category作为字段。我想将product_name行值添加到重复类别值的组合框中

 product_name | category
--------------+----------
 Ceiling fan  |  fan               
 Table fan    |  fan               
 Wall fan     |  fan               
我尝试下面的代码,但没有do while语句,它给出一个值,当我尝试循环它时,机器挂起。Plz帮助

Option explicit
 Private sub cboCategories_Click()
  cboProducts.clear
  rs.open "select * from product". cn, adOpenDynamic. adLockOptimistic
   With rs
    .find "category=' " & cbiCategories.Text &  " ' "   
   .moveFirst
    With rs(0).value
    Do until rs.EOF
    cboProducts.AddItem rs(0).Value
    rs.MoveNext
    Loop
   End with 
  End with
  End sub

这是我目前的桌子。我想将product_name字段值添加到组合框中,其中类别名称相同,例如“fan”

有几种方法可以剥这种猫的皮。一种是从使用数据整形服务创建的断开连接的分层记录集中获取组合框数据

本例假设CSV文件具有标题行,但Jet或其他数据库表也适用于此情况:

Option Explicit

Private rsShapedProducts As ADODB.Recordset

Private Sub cboCategories_Click()
    With cboProducts
        .Clear
        With rsShapedProducts
            .MoveFirst
            .Find "[Category]='" & cboCategories.List(cboCategories.ListIndex) & "'"
            With ![Products].Value
                .MoveFirst
                Do Until .EOF
                    cboProducts.AddItem ![Product].Value
                    .MoveNext
                Loop
            End With
        End With
        .ListIndex = 0
    End With
End Sub

Private Sub cboProducts_Click()
    lblSelection.Caption = cboCategories.List(cboCategories.ListIndex) _
                         & " -> " _
                         & cboProducts.List(cboProducts.ListIndex)
End Sub

Private Sub Form_Load()
    Set rsShapedProducts = New ADODB.Recordset
    With rsShapedProducts
        .CursorLocation = adUseClient
        .Open "SHAPE {" _
            & "SELECT [Category], [Product] FROM [products.txt] " _
            & "ORDER BY [Category], [Product]" _
            & "} AS [Products] COMPUTE [Products] BY [Category]", _
              "Provider=MSDataShape;Data Provider=Microsoft.Jet.OLEDB.4.0;" _
            & "Data Source='" & App.Path & "';Extended Properties='Text;Hdr=Yes'", _
              adOpenStatic, _
              adLockReadOnly, _
              adCmdText
        Set .ActiveConnection = Nothing
        Do Until .EOF
            cboCategories.AddItem ![Category].Value
            .MoveNext
        Loop
    End With
    Show
    cboCategories.ListIndex = 0
End Sub

Private Sub Form_Unload(Cancel As Integer)
    rsShapedProducts.Close
End Sub
我使用的测试数据:

Category,Product
Fan,Ceiling Fan
Fan,Table Fan
Fan,Wall Fan
Lamp,Floor Lamp
Lamp,Table lamp
Lamp,Desk Lamp
Table,Coffee Table
Table,End Table
Table,Kitchen Table
Table,Dining Table
Table,Card Table

什么组合框?目前如何从表中检索这些数据到VB6代码中?我在combo1.list中添加了两个组合框combo1和combo2…我添加了一个类别,如fan、freeze等。。。。现在我想在combo2中添加product的值,其中combo1的值为=类别值…我正在处理msaccess数据库…这可以作为进一步的解释,但在这一点上对我没有帮助。您是在开发MS Access数据库前端,还是在VB6中编码?MS Access是我的后端。。。我想从vb6编码中添加此详细信息。。。。谢谢你的回复兄弟。。。plz help meThe代码给出了一个错误Microsoft.jet数据库引擎找不到对象“products.txt”,请确保对象存在,并且正确拼写其名称和路径名。我的表名为Products。请确保您可以进行所需的更改,以使用与数据库匹配的连接和SQL?Brother我想将类别值添加到combo1,然后将product_name值添加到combo2,其中类别相同请参见我的表。。。。我的表名是product plz help me
Private Function IsInCollection(ByVal Coll As Collection, CollKey As String) As Boolean
    On Error GoTo errHandler
    Dim b As Variant
    b = Coll(CollKey)
    IsInCollection = True
errHandler:
    Err.Clear
    Exit Function
End Function

Public Sub FillCombo()
    Dim rs As Adodb.Recordset
    Dim Coll As New Collection
    Dim strNewValue As String
    Set rs = fillMyRs
    Do While Not rs.EOF
        strNewValue = rs.Fields("category").Value
        If IsInCollection(Coll, strNewValue) Then
            strNewValue = strNewValue & " - " & rs.Fields("product_name").Value
        Else
            Coll.Add strNewValue, strNewValue
        End If
        Combo1.AddItem strNewValue
        rs.MoveNext
    Loop
End Sub