回 帖 发 新 帖 刷新版面

主题:两个组合框关联

两个组合框如何关联呢,比如,第一个组合框是省会,第二个组合框全部室省会下面的城市,另外,相应数据库怎么设计呢,谢谢

回复列表 (共4个回复)

沙发


COMBOBOX控件?不是有Change事件吗?按事件来写就是了

板凳

必须配备数据库。

数据库中只用一帐表。字段为:
ID  省份   城市

楼上说的对,在“省份”组合框单击事件中,查询数据库,得到一个记录集,写入“城市”列表框。

3 楼

[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 楼

列表框行不行啊????

我来回复

您尚未登录,请登录后再回复。点此登录或注册