2015-11-04 71 views
-3

我有一个表名称“product”,而product_name类别是一个字段。我想在这里给行值添加到其中重复类别值的组合框....如何将行值添加到组合框中

product_name | category 
--------------+---------- 
Ceiling fan | fan    
Table fan | fan    
Wall fan  | fan    

我尝试下面的代码,但没有做while语句它给出一个值,当我试图循环播放机器挂起。 Plz help

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'

+0

什么组合框?你现在如何从表中将这些数据检索到你的VB6代码中? – Jonnus

+0

我在combo1.list中添加了两个组合框combo1和combo2 ...我添加了一个类似fan,freeze等的类....现在我想在combo2中添加产品的值,其中combo1的值是category值... – user5523898

+0

我正在msaccess数据库上工作.. – user5523898

回答

0

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

这个例子假设有一个标题行的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 
+0

该代码给出了一个错误......“微软。 jet数据库引擎找不到对象'products.txt',请确保该对象存在,并且正确拼写其名称和路径名。 – user5523898

+0

我的表名是产品 – user5523898

+0

当然,您可以进行所需的更改以使用与数据库匹配的Connection和SQL? – Bob77

0
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 
+0

兄弟我想添加类别值combo1,然后product_name值combo2在类别相同看到我的问题表....我的表名称是产品plz帮助我 – user5523898