各位师兄:
以下是我的数据结构:
     
     id       tid        合同编号        公司型号      客户型号
       
     1         0          2004
     2         1                         ro-001        bk-as1
     3         1                         ro-002        bk-as2
     4         0          2005
     5         4                         ro-004        bk-as4
   
  我想用两个ComboBox的控件 , combo1与数据库连接, 自动显示合同编号, 即是当用户
选择combo1合同编号2004,combo2就自动显示出ro-001和ro-002,让用户选择.
(注:关联结构是id,tid)
       
     请给点帮助,意见,代码,不甚感激!!!在线等

解决方案 »

  1.   

    有个笨方法:
    if combo1.text="2004" then
        combo2.text="ro-001"
    endif
      

  2.   

    if combo1.text="2004" then
        combo2.clear
        combo2.additem  "ro-001"
       combo2.additem  "ro-002"
    end if
      

  3.   

    ADO就用DataCombo,DAO就用DBCombo,这两个控件都可以与数据库绑定,其中DataCombo在Microsoft Datalist Controls中,DBControl在Microsoft Data Bound List Controls中DataCombo控件使用代码
    dim conn as adodb.connection
    dim rec as adodb.recordset
    ......'省略用ADO连接数据库代码set rec=new adodb.recordset
    rec.open "select * from table1",conn,1,1
    set datacombo1.rowsource=rec
    datacombo1.listfield="列1"在Datacombo1的Click事件中添加
    dim rs adodb.recordset
    set rs=new adodb.recordset
    rs.open "select * from table2 where 列1='"& datacombo1.text &"'",conn,1,1
    set datacombo2.rowsource=rs
    datacombo2.listfield="列2"差不多就是这样了,现写的可能有些错误,但方法没问题
      

  4.   

    (只有想不到的,没有做不到的)师兄:
           有点头绪,谢谢你的回复,但能否单纯用ComboBox的属性以及利用from的载入来控制数据库的关联???
      

  5.   

    可以,先清空,然后循环添加dim rec as adodb.recordsetset rec=new adodb.recordset
    rec.open "select * from table1",conn,1,1combo1.clearwhile not rec.eof
      combo1.additem rec.fields("列1")
      rec.movenext 
    wend在Combo1的Click事件中添加combo2.cleardim rs as adodb.recordset
    set rs=new adodb.recordset
    rs.open "select * from table2 where 列1='"& combo1.text &"'",conn,1,1
    while not rs.eof
      combo2.additem rs.fields("列2")
      rs.movenext
    wend这种方法不如上一种方法简单,执行效率上也不如
      

  6.   

    Dim mrc As ADODB.Recordset
    Dim myBook As Variant
    Dim txtSQL As String
    Dim Msgtext As StringPrivate Sub ComboSJ_Click()
    ComboSB.Clear
    Flagselect = False
    txtSQL = "select distinct (赛别) from 比赛信息表 where 赛季='" & Trim(ComboSJ.Text) & "'"
    Set mrc = ExecuteSQL(txtSQL, Msgtext)
        While (mrc.EOF = False)
            ComboSB.AddItem mrc!赛别
            mrc.MoveNext
        Wend
        mrc.Close
    End SubPrivate Sub ComboZD_Click()
    ComboKD.Clear
    Flagselect = False
    txtSQL = "select distinct (客队) from 比赛信息表 where 赛季='" & Trim(ComboSJ.Text) & "' and 赛别='" & Trim(ComboSB.Text) & "' and 主队='" & Trim(ComboZD.Text) & "' order by 客队"
    Set mrc = ExecuteSQL(txtSQL, Msgtext)
        While (mrc.EOF = False)
            ComboKD.AddItem mrc!客队
            mrc.MoveNext
        Wend
        mrc.Close
    End Sub
    Private Sub ComboKD_Click()
    Flagselect = False
    txtSQL = "select * from 比赛信息表 where  赛季='" & Trim(ComboSJ.Text) & "' and 赛别='" & Trim(ComboSB.Text) & "' and 客队='" & Trim(ComboKD.Text) & "'and 主队='" & Trim(ComboZD.Text) & "'"
    Set mrc = ExecuteSQL(txtSQL, Msgtext)
       If mrc.EOF = True Then
         MsgBox "比赛信息表中没有此场比赛的比赛信息,请添加!", vbOKOnly + vbExclamation, "警告"
         Else
        first.Enabled = True
        last.Enabled = True
        preview.Enabled = True
        nextcmd.Enabled = True
        modify.Enabled = True
        delete.Enabled = True
        mrc.MoveFirst
        Call viewData
        myBook = mrc.Book
        End If
    End Sub你可以参照一下
      

  7.   

    对不起,第六行没有错误的,过程是combosj---->combosb---->combozd---->combokd--->取出数据!是一步一步赋值的!