给你一个以前的例子 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
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
上面的加上下面的两个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
但是set rs=conn.excute(strsql)运行的时候提示有错误。。
'按这种发式修改一下 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'' '-什么错误,也许是语法错误
把代码放在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语句根据自己的情况改一下基本上就能用了.
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
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
数据查询这部分自己能完成吧?
那剩下的问题就是使用什么事件触发查询了
应该是第一个combobox的click吧
先清空第二个combobox
然后检索出属于第一个combobox选中的部门的人
使用ADDitem添加进第二个combobox
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
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''
'-什么错误,也许是语法错误
试试这个:
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语句根据自己的情况改一下基本上就能用了.