小弟用combobox控件做一个精确的查询。就是当从第一个combobox控件选择一个部门后,第2个combobox控件中就能显示这个部门所有人的姓名。。小弟不会做。还请高手指点。在线等待

解决方案 »

  1.   

    第一个combobox控件的click事件(别的事件也可以)中,加载第二个控件的内容
      

  2.   

    给你一个以前的例子
    Public Sub CmbQryList(CmbName2 As ComboBox, ByVal intSort As Integer, ByVal strQry1 As String) '根据cmb1的内容,显示cmb2的内容
        On Error GoTo ErrorExit
        Dim strSql As String
        Dim j As Integer
        j = 0
        If rsClass.State Then rsClass.Close
        Select Case strQry1
            Case "全部"
                With CmbName2
                    .Clear
                    .AddItem "全部"
                    .ListIndex = 0
                End With
            Case "承运商"
                CmbTransLL CmbName2
      
            Case "省份"
                CmbShopPC "Province", CmbName2
            
            Case "城市"
                CmbShopPC "City", CmbName2
                
            Case "区域"
                CmbShopArea CmbName2
                
            Case "店铺"
                CmbShopList CmbName2
                
            Case "运输性质"
                CmbClass "TransProperty", CmbName2
                
            Case "运输方式"
                CmbClass "TransMode", CmbName2
            Case "中心店"
                CmbShop3 CmbName2
            Case "收货店"
                CmbShopList CmbName2
            Case "发货店"
                CmbShopList CmbName2
                
            Case "其它"
                CmbQryListO CmbName2, intSort
            Case "未发"
                CmbQryListO CmbName2, intSort
            Case "已发"
                With CmbName2
                    .Clear            End With
        End Select
            
            
        Exit Sub
    ErrorExit:
        MsgBox "意外错误:" & Err.Description
    End Sub
      

  3.   

    Private Sub Combo1_Click()
        StrSql="Select 姓名,部门 From 表 Where 部门='"+Combo1.text
        dim Rs as adodb.recordset
        set rs=conn.excute(strsql)
        Combo2.clear
        while not rs.eof
            Combo2.additem Rs("姓名")
            Rs.movenext
        wend
    End Sub
      

  4.   

    是使用数据库吧?
    数据查询这部分自己能完成吧?
    那剩下的问题就是使用什么事件触发查询了
    应该是第一个combobox的click吧
    先清空第二个combobox
    然后检索出属于第一个combobox选中的部门的人
    使用ADDitem添加进第二个combobox
      

  5.   

    上面的加上下面的两个sub都是放在moudle中
    Public Sub CmbShop3(CmbName As ComboBox)                           '中心店信息
        Dim strSql As String
        If rsClass.State Then rsClass.Close
        strSql = "SELECT DISTINCT Shop3 FROM TransShop WHERE Shop3 IS NOT NULL AND Shop3 <>' ' "
        rsClass.Open strSql, Cn, adOpenStatic, adLockReadOnly
        With CmbName
            .Clear
            Dim i As Integer
            i = 0
            Do While Not rsClass.EOF
                .AddItem Trim(rsClass!Shop3)
                .ItemData(i) = rsClass!Shop3
                i = i + 1
                rsClass.MoveNext
            Loop
            .ListIndex = 0
        End With
    End Sub
    Public Sub CmbShopList(CmbName As ComboBox)                          '店铺
        Dim strSql As String
        If rsClass.State Then rsClass.Close
        strSql = "SELECT a.ShopNo,a.Name FROM VEtamShop a ORDER BY a.ShopNo"
        rsClass.Open strSql, Cn, adOpenStatic, adLockReadOnly
        With CmbName
            .Clear
            Dim i As Integer
            i = 0
            Do While Not rsClass.EOF
                .AddItem Right("0000" + CStr(rsClass!ShopNo), 4) + " - " + IIf(IsNull(rsClass!Name), "", Trim(rsClass!Name))
                .ItemData(i) = rsClass!ShopNo
                i = i + 1
                rsClass.MoveNext
            Loop
            .ListIndex = 0
        End With
    End Sub'------------调用代码
    Private Sub CmbQry1_Click()   'combobox控件事件
        On Error GoTo ErrorExit
        CmbQryList CmbQry2, 3, CmbQry1.Text         '根据CmbQry1内容变化,显示CmbQry2内容
            
        Exit Sub
    ErrorExit:
        MsgBox "意外错误:" & Err.Description
    End Sub
      

  6.   

    但是set rs=conn.excute(strsql)运行的时候提示有错误。。
      

  7.   

    '按这种发式修改一下 
    Dim strSql As String
        If rsClass.State Then rsClass.Close  '这条语句别忘了
        strSql = "SELECT DISTINCT Shop3 FROM TransShop WHERE Shop3 IS NOT NULL AND Shop3 <>' ' "
        rsClass.Open strSql, Cn, adOpenStatic, adLockReadOnly
        With CmbName
            .Clear
            Dim i As Integer
            i = 0
            Do While Not rsClass.EOF
                .AddItem Trim(rsClass!Shop3)
                .ItemData(i) = rsClass!Shop3
                i = i + 1
                rsClass.MoveNext
            Loop
            .ListIndex = 0
        End With''
    '-什么错误,也许是语法错误
      

  8.   

    把代码放在combo2的dropdown事件里
    试试这个:
    Private Sub Combo2 _DropDown()
        dim str as String
        Dim strSQL      As String
        Dim rst As New ADODB.Recordset
        'MyCnn=
        With rst
            .ActiveConnection = MyCnn
            .CursorType = adOpenStatic
            .LockType = adLockReadOnly
        End With
        str=trim(Combo1.text)
        StrSql="Select 姓名 From 表 Where 部门='" & str & "'"
        rst.Open strSQL: DoEvents
        Combo2.clear
        Do Until rs.eof
            Combo2.additem Rs("姓名")
            Rs.movenext
        loop
    End Sub注意给连接字符串赋值,就是在
        'MyCnn=
    这句,SQL语句根据自己的情况改一下基本上就能用了.
      

  9.   

    你可以在第一个COMBOBOX的CHANGE事件中写代码,根据这个值去查第二个COMBOBOX的值啊