怎样实现vb6的combox三级联动
发布网友
发布时间:2023-08-17 03:42
我来回答
共2个回答
热心网友
时间:2024-11-22 22:43
1、在列表的事件里设定spl查询语句从各表表中取数据即可,此方法关键在于查询条件的设定;
2、以下方法是纯数组实现*联动。
思路:定义一个结构体,然后定义一个结构体类型的数组;
结构体第一项为列表一的项;
结构体第二项为列表二的项目数组
结构体第三项为列表三的项目数组
这样以来,是结构体数组嵌套数组,3个列表形成连带关系,选择列表1的项时,列表2对应加载和列表1对应的结构体中第二项数据(是个数组),列表3亦然。
如果用三维数组表示也可以,但是没这样直观。
以下是联动示例,至于把数据从数据库读到数组里,那就不是此问题的关键,也不是难事。
Private Type data1
d_num As Long '列表1*******(示例中为数字)
d_val1(9) As Long '列表2*******(示例中为列表1的值+100+index)
d_val2(9) As Long '列表3******(示例中为列表2的值+10)
End Type
Dim test(9) As data1
Private Sub Combo1_Click()
Combo2.Clear: Combo2.Text = test(Combo1.ListIndex).d_val1(0)
For i = 0 To UBound(test(Combo1.ListIndex).d_val1())
Combo2.AddItem test(Combo1.ListIndex).d_val1(i) '列表2变动
Next i
Combo3.Clear: Combo3.Text = test(Combo1.ListIndex).d_val2(0)
For i = 0 To UBound(test(Combo1.ListIndex).d_val2())
Combo3.AddItem test(Combo1.ListIndex).d_val2(i) '列表3变动
Next i
End Sub
Private Sub Form_Load()
For i = 0 To 9 '初始化
test(i).d_num = i
For j = 0 To 9
test(i).d_val1(j) = test(i).d_num + 100 + j '列表2数组赋值
test(i).d_val2(j) = test(i).d_val1(j) + 10 '列表3数组赋值
Next j
Combo1.AddItem test(i).d_num '列表初始化
Combo2.AddItem test(0).d_val1(i): Combo3.AddItem test(0).d_val2(i) '列表初始化
Next i
Combo1.Text = test(0).d_num 'text显示
Combo2.Text = test(0).d_val1(0): Combo3.Text = test(0).d_val2(0) 'text显示
End Sub
热心网友
时间:2024-11-22 22:44
这个思路与方法如下:
我以学校里的年级、班级、学生*来举例:
一个完全中学学校有初中和高中6个年级,每个年级有若干个班级,每个班级有若干学生:
第1级类别:一张表,表名:年级表
字段名。就叫“年级”:
年级
具体有:初一年级,初二年级,初三年级,高一年级,高二年级,高三年级
第2级类别:6张表名:初一年级,初二年级,初三年级,高一年级,高二年级,高三年级
假设每个年级都是12个班级:没个表也只有一个字段,字段名为“班级名”
那么,在初一年级表里,如下:
班级名
初一(01)班
初一(02)班
初一(03)班
初一(04)班
初一(05)班
初一(06)班
初一(07)班
初一(08)班
初一(09)班
初一(10)班
初一(11)班
初一(12)班
其它个年级表里情况类似:
第3级类别:有6*12=72张表,每一张表对应某个年级的某个班,假设表名就用班级名,例如:
初一(01)班、初一(02)班、......初一(12)班
没个表里就一个字段,字段名为“姓名”,例如:初一(01)班这个表里可能是40个同学:
姓名
陈思伟
李小光
...
...
程序启动:
在Combo1里添加“年级表”里的字段“年级名”的所有记录值,即6个年级名。且Combo1.Text = Combo1.List(0),即“初一年级”
在Combo2里添加“初一年级表”里的字段“班级名”的所有记录值,即12个班级名。且Combo2.Text = Combo2.List(0),即“初一(01)班”
在Combo3里添加“初一(01)班”表里的字段“姓名”的所有记录值,即40个同学名。且Combo3.Text = Combo3.List(0),即“陈思伟”
接下来:
在Private Sub Combo2_Change()里,编写代码:
先清除Combo3的项目
然后根据Combo2.text的值,去打开数据对应年级数据表--Combo2.text表,将该表里的所有“姓名”添加到Combo3里,
随后使得Combo3.Text = Combo3.List(0)