| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1821 人关注过本帖
标题:我做了一个三级级联的组合框,类似于省、市、县三级级联的组合框,combo1省 ...
只看楼主 加入收藏
小小菜7
Rank: 1
等 级:新手上路
帖 子:67
专家分:0
注 册:2016-5-13
结帖率:93.75%
收藏
已结贴  问题点数:10 回复次数:8 
我做了一个三级级联的组合框,类似于省、市、县三级级联的组合框,combo1省 combo2市 combo3县。
请问一下,下一步如何根据省、市、县进行查询?代码该如何写?
搜索更多相关主题的帖子: 下一步 如何 
2016-05-30 16:42
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9799
专家分:26886
注 册:2012-2-5
收藏
得分:0 
语言表达能力很重要

坚守VFP最后的阵地
2016-05-30 16:55
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
你的三级级联的组合框是怎么做的?
2016-05-30 17:08
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:4 
*表结构:
*父子表(id int,name c(20),p_id int) &&p_id为此id的上1级id,此3个字段必须有
create cursor 父子表(id int,name c(20),p_id int)
insert into 父子表(id,name,p_id) values(1,'广东省',0)
insert into 父子表(id,name,p_id) values(2,'广西省',0)
insert into 父子表(id,name,p_id) values(3,'深圳市',1)
insert into 父子表(id,name,p_id) values(4,'广州市',1)
insert into 父子表(id,name,p_id) values(5,'福田区',3)
insert into 父子表(id,name,p_id) values(6,'龙岗区',3)
insert into 父子表(id,name,p_id) values(7,'越秀区',4)
insert into 父子表(id,name,p_id) values(8,'东山区',4)
*combo1的数据源
select * from 父子表 where p_id=0 into cursos cb1
*combo2的数据源
select * from 父子表 where p_id in(select id from cb1 where allt(name)=allt()) into cursos cb2
*combo3的数据源
select * from 父子表 where p_id in(select id from cb2 where allt(name)=allt()) into cursos cb3
*联动

*在combo1.Init 上写
select * from 父子表 where p_id=0 into cursos cb1
'cb1'

*在combo1.InteractiveChange 上写

select * from 父子表 where p_id in(select id from cb1 where allt(name)=allt()) into cursos cb2
'cb2'

*在combo2.InteractiveChange 上写

select * from 父子表 where p_id in(select id from cb2 where allt(name)=allt()) into cursos cb3
'cb3'




2016-05-30 17:19
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:3 
先做个DBF表文件,其中至少包含三个字段:省级名称、市级名称(含省辖县)、县区级名称。念叨一句:其实这个表工作量是巨大的。然后,组合框1的Init事件中设置:This.RowSourceType=3,This.RowSource="SELECT DISTINCT 省级名称 FROM 表文件"。当然,组合框1的所有设置也可以放在表单的Init事件中做,只是不能用“This”。还是组合框1,InteractiveChange事件中要设置组合框2了,因为随着组合框1选择内容的不同,组合框2应该有级联性的变化:
WITH Thisform.组合框2
  .RowSourceType=0
  .RowSource=""
  .RowSourceType=3
  .RowSource="SELECT DISTINCT 市级名称 FROM 表文件 WHERE 省级名称==This.DisplayValue"
ENDWITH
最后,组合框2的InteractiveChange事件也应该有类似的设置组合框3的语句块,只是把上一段的“Thisform.组合框2”改为“Thisform.组合框3”,最后一条RowSource改为“SELECT DISTINCT 县区级名称 WHERE 市级名称==This.DisplayValue”。


[此贴子已经被作者于2016-5-31 08:08编辑过]

2016-05-31 08:06
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:3 
以下是引用mywisdom88在2016-5-30 17:19:02的发言:

*表结构:
*父子表(id int,name c(20),p_id int) &&p_id为此id的上1级id,此3个字段必须有
create cursor 父子表(id int,name c(20),p_id int)
insert into 父子表(id,name,p_id) values(1,'广东省',0)
insert into 父子表(id,name,p_id) values(2,'广西省',0)
insert into 父子表(id,name,p_id) values(3,'深圳市',1)
insert into 父子表(id,name,p_id) values(4,'广州市',1)
insert into 父子表(id,name,p_id) values(5,'福田区',3)
insert into 父子表(id,name,p_id) values(6,'龙岗区',3)
insert into 父子表(id,name,p_id) values(7,'越秀区',4)
insert into 父子表(id,name,p_id) values(8,'东山区',4)
*combo1的数据源
select * from 父子表 where p_id=0 into cursos cb1
*combo2的数据源
select * from 父子表 where p_id in(select id from cb1 where allt(name)=allt()) into cursos cb2
*combo3的数据源
select * from 父子表 where p_id in(select id from cb2 where allt(name)=allt()) into cursos cb3
*联动

*在combo1.Init 上写
select * from 父子表 where p_id=0 into cursos cb1
'cb1'

*在combo1.InteractiveChange 上写

select * from 父子表 where p_id in(select id from cb1 where allt(name)=allt()) into cursos cb2
'cb2'

*在combo2.InteractiveChange 上写

select * from 父子表 where p_id in(select id from cb2 where allt(name)=allt()) into cursos cb3
'cb3'

你这个表没有逻辑性了吧?

2016-05-31 16:54
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
你没看出逻辑,其实,包含了很强的逻辑了。
ID,NAME,P_ID,
ID是他自己的ID,NAME是他自己的名称,P_ID是他上级的ID,也就是他的父ID,
1个父可以有多个子,但1个子只要1个父,所以,只要记住父ID就可以了。用ID比用名称的好处是,还可以避免名称相同。ID用自增字段

[此贴子已经被作者于2016-5-31 18:01编辑过]

2016-05-31 18:00
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
以下是引用mywisdom88在2016-5-31 18:00:18的发言:

你没看出逻辑,其实,包含了很强的逻辑了。
ID,NAME,P_ID,
ID是他自己的ID,NAME是他自己的名称,P_ID是他上级的ID,也就是他的父ID,
1个父可以有多个子,但1个子只要1个父,所以,只要记住父ID就可以了。用ID比用名称的好处是,还可以避免名称相同。ID用自增字段



我说的逻辑性是指,一条记录看不出逻辑关系,例如:一条记录只有区,如果想要知道市,就需要往上翻,知道省再翻。。。。。。

2016-06-01 08:46
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用baichuan在2016-6-1 08:46:36的发言:

 
 
 
我说的逻辑性是指,一条记录看不出逻辑关系,例如:一条记录只有区,如果想要知道市,就需要往上翻,知道省再翻。。。。。。
你是想记录这样写?ID,省,市,县?
我设计的是ID,NAME,P_ID(注意后面的备注:此3个字段必须,你喜欢把“省,市,县”加进去,也可以。但有个问题就是,不伦不类。比如你的表这样设计

ID,   省,    市,    县,   镇,   
1001,广东省,“”,“”,“”,“”
1002,广东省,广州市,“”,“”,“”
1003,广东省,广州市,东山区,“”,“”
1004,福建省,“”,“”,“”,“”
出现这样不伦不类的记录出来

如果用我的表,则
ID,   NAME,   P_ID
1001,广东省,0
1002,广州市,1001
1003,东山区,1002
1004,福建省,0


2016-06-01 17:16
快速回复:我做了一个三级级联的组合框,类似于省、市、县三级级联的组合框,com ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018611 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved