回 帖 发 新 帖 刷新版面

主题:关于combo的数据问题

表中有三个字段分别是局,处,科,在表单上建立2个combo控件,一个list控件,在combo1,显示所有的局名称,点击某一个局,在combo2中显示该局中的所有处,在点击处,在 list1中显示该处中所有的科,不知道如何实现?

回复列表 (共4个回复)

沙发

treeview控件最好!

板凳

办法挺多的,我为您提供一个最近才学习并应用的一个例子,有些代码不知是否精炼;
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 楼

也可以以表为数据源,来筛选相应的局、处和科室
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 楼

谢谢!我想打开后combo1显示第一个局,点每一个局就可显示这个局内的第一个处,点每一个处就可显示第一个科!

我来回复

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