主题:两个组合框关联
alax
[专家分:0] 发布于 2010-01-16 16:30:00
两个组合框如何关联呢,比如,第一个组合框是省会,第二个组合框全部室省会下面的城市,另外,相应数据库怎么设计呢,谢谢
回复列表 (共4个回复)
沙发
fatxing [专家分:150] 发布于 2010-01-16 17:37:00
COMBOBOX控件?不是有Change事件吗?按事件来写就是了
板凳
老大徒伤悲 [专家分:29120] 发布于 2010-01-16 19:23:00
必须配备数据库。
数据库中只用一帐表。字段为:
ID 省份 城市
楼上说的对,在“省份”组合框单击事件中,查询数据库,得到一个记录集,写入“城市”列表框。
3 楼
天天学习 [专家分:4570] 发布于 2010-01-19 09:44:00
[code=c]Option Explicit
Dim varCity As Variant
Private Sub Combo1_Change()
'//! won't be fired as expected, unless you modified (input & del) the text of combo instead of changing the selected item (index)
Debug.Print "changed"
End Sub
Private Sub Combo1_Click()
'//! 当选择项改变时,Combo的Change事件并不触发。所以最好用Click事件替代(至少我是这么干的)
RefreshCombo (Combo1.ListIndex)
End Sub
Private Sub Form_Load()
Dim i As Integer
Dim n As Integer
'//! 城市列表,每一个子Array数组格式:省份名称,该省下的所有城市
'//! 也可以用特殊分隔符的字符串结合split实现。或者Dictionary。
varCity = Array( _
Array("北京", "北京"), _
Array("上海", "上海"), _
Array("四川", "成都", "雅安", "德阳", "乐山"), _
Array("重庆", "重庆") _
)
n = UBound(varCity)
Combo1.Clear
For i = 0 To n
Combo1.AddItem varCity(i)(0)
Next
Combo1.ListIndex = 0
End Sub
Private Sub RefreshCombo(ByVal nIndex As Integer)
Dim i As Integer
Dim n As Integer
n = UBound(varCity)
If nIndex < 0 Or nIndex > n Then nIndex = 0
n = UBound(varCity(nIndex))
Combo2.Clear
For i = 1 To n
Combo2.AddItem varCity(nIndex)(i)
Next
Combo2.ListIndex = 0
End Sub
[/code]
4 楼
google5 [专家分:30] 发布于 2010-04-01 13:43:00
列表框行不行啊????
我来回复