主题:关于combo的数据问题
crocodile3358
[专家分:390] 发布于 2008-09-06 10:53:00
表中有三个字段分别是局,处,科,在表单上建立2个combo控件,一个list控件,在combo1,显示所有的局名称,点击某一个局,在combo2中显示该局中的所有处,在点击处,在 list1中显示该处中所有的科,不知道如何实现?
回复列表 (共4个回复)
沙发
wzxc [专家分:9440] 发布于 2008-09-06 12:23:00
treeview控件最好!
板凳
qd163 [专家分:230] 发布于 2008-09-07 10:57:00
办法挺多的,我为您提供一个最近才学习并应用的一个例子,有些代码不知是否精炼;
1、combo1的设置如下:
rowsourcetype=1
rowsource='局1,局2,局3'
2、combo1的interactivechange事件中添加如下代码:
do case
case thisfrom.combo1.displayvalue="局1"
thisform.combo2.additem("处1")
thisform.combo2.additem("处2")
case thisfrom.combo1.displayvalue="局2"
thisform.combo2.additem("处3")
thisform.combo2.additem("处4")
case thisfrom.combo1.displayvalue="局3"
thisform.combo2.additem("处5")
thisform.combo2.additem("处6")
endcase
3、在combo2的interactivechang事件中添加类似代码,以在list1中显示相应的科室。
3 楼
qd163 [专家分:230] 发布于 2008-09-07 11:32:00
也可以以表为数据源,来筛选相应的局、处和科室
1、表单的load事件中添加如下代码(ttt为您的数据表)
If Used("ttt")
Select ttt
Else
Use ttt Alias ttt In 0
Endif
2、在combo1的int事件中添加:
SELECT 局 FROM ttt GROUP BY 局 INTO CURSOR tmp
thisform.combo1.rowsourcetype=2
thisform.combo1.rowsource="tmp"
3、在combo1的interactivechang事件中添加:
ccc=ALLTRIM(thisform.combo1.DisplayValue )
SELECT 处 FROM ttt WHERE 局==ccc GROUP BY 处 INTO CURSOR tmp2
thisform.combo2.RowSourceType = 2
thisform.combo2.RowSource ="tmp2"
4、在combo2的interactivechang事件中添加:
kkk=ALLTRIM(thisform.combo2.DisplayValue )
SELECT 科 FROM ttt WHERE 处==kkk INTO CURSOR tmp3
thisform.list1.RowSourceType = 2
thisform.list1.RowSource ="tmp3"
4 楼
crocodile3358 [专家分:390] 发布于 2008-09-10 19:05:00
谢谢!我想打开后combo1显示第一个局,点每一个局就可显示这个局内的第一个处,点每一个处就可显示第一个科!
我来回复