标题:如何实现在combo2下拉列表中显示combo1做为条件显示的列项
只看楼主
bsthq
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-8-25
结帖率:66.67%
 问题点数:0 回复次数:7 
如何实现在combo2下拉列表中显示combo1做为条件显示的列项
我有部门代码、部门、人员资料三个表,现在建立了一个表单,通过部门和部门代码两个combo1和combo2两个控件进行组合查询人员资料表的内容。
部门表结构:  部门名称  
部门代码表结构:部门名称、班组名称
人员资料表结构:编号、姓名、职务、性别、参加工作时间等
现在的问题是,我如何通过combo1中选中的部门,在combo2中对应显示部门代码中属于同一部门名称中的班组,然后用combo1和combo2中的内容对人员资料表进行组合查询。

我在命令窗口中使用: select 班组名称 from 部门代码 where 部门="xxxxx" 可以显示结果, 但是在表单中不知道如何做。请各位老师给出解决办法。谢谢!

如果有实例最好了
搜索更多相关主题的帖子: where xxxxx 如何 姓名 资料 
2012-07-10 10:47
apple0072011
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:249
专家分:989
注 册:2011-8-17
得分:0 
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-8-25
结帖率:60%

天道酬勤
2012-07-10 14:14
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
以下是引用bsthq在2012-7-10 10:47:14的发言:

我有部门代码、部门、人员资料三个表,现在建立了一个表单,通过部门和部门代码两个combo1和combo2两个控件进行组合查询人员资料表的内容。
部门表结构:  部门名称  
部门代码表结构:部门名称、班组名称
人员资料表结构:编号、姓名、职务、性别、参加工作时间等
现在的问题是,我如何通过combo1中选中的部门,在combo2中对应显示部门代码中属于同一部门名称中的班组,然后用combo1和combo2中的内容对人员资料表进行组合查询。

我在命令窗口中使用: select 班组名称 from 部门代码 where 部门="xxxxx" 可以显示结果, 但是在表单中不知道如何做。请各位老师给出解决办法。谢谢!

如果有实例最好了
程序代码:
Form1 = NEWOBJECT("C_Form")
Form1.SHOW
READ EVENTS
RETURN
DEFINE CLASS C_FORM AS FORM
   AUTOCENTER=.T.
   CAPTION="组合框查询示例一"
   SHOWTIPS=.T.
   ADD OBJECT LABEL1 AS LABEL WITH AUTOSIZE=.T.,CAPTION="部门",TOP=16,LEFT=10,HEIGHT=28,WIDTH=40
   ADD OBJECT COMBO1 AS COMBOBOX WITH TOP=6,LEFT=40,HEIGHT=24 
   ADD OBJECT LABEL2 AS LABEL WITH AUTOSIZE=.T.,CAPTION="部门代码",TOP=16,LEFT=152,HEIGHT=28,WIDTH=40
   ADD OBJECT COMBO2 AS COMBOBOX WITH TOP=6,LEFT=205,HEIGHT=24 
   ADD OBJECT GRID1 AS GRID WITH TOP=((THISFORM.HEIGHT-THISFORM.GRID1.HEIGHT)/2)+20,LEFT=(THISFORM.WIDTH-THISFORM.GRID1.WIDTH)/2
   PROCEDURE INIT
      *---部门
      CREATE CURSOR 部门 (部门名称 C(10))
      INSERT INTO 部门 VALUES ("参谋处")
      INSERT INTO 部门 VALUES ("作战处")
      INSERT INTO 部门 VALUES ("通讯处")
      *---部门代码
      CREATE CURSOR 部门代码 (部门名称 C(10),班组名称 C(10))
      INSERT INTO 部门代码 VALUES ("参谋处","参谋一处")
      INSERT INTO 部门代码 VALUES ("参谋处","参谋二处")
      INSERT INTO 部门代码 VALUES ("作战处","作战一处")
      INSERT INTO 部门代码 VALUES ("作战处","作战二处")
      INSERT INTO 部门代码 VALUES ("通讯处","通讯一处")
      INSERT INTO 部门代码 VALUES ("通讯处","通讯二处")
      *---人员资料
      CREATE CURSOR 人员资料 (班组名称 C(10),姓名 C(8))
      INSERT INTO 人员资料 VALUES ("通讯二处","AAAAAA")
      INSERT INTO 人员资料 VALUES ("作战一处","BBBBBB")
      INSERT INTO 人员资料 VALUES ("参谋一处","CCCCCC")
      INSERT INTO 人员资料 VALUES ("作战二处","DDDDDD")
      INSERT INTO 人员资料 VALUES ("通讯一处","EEEEEE")
      INSERT INTO 人员资料 VALUES ("参谋二处","FFFFFF")
      GO TOP IN 人员资料
      WITH THISFORM.GRID1
           .RECORDSOURCE="人员资料"
           .RECORDSOURCETYPE=1
           FOR I=1 TO .COLUMNCOUNT
               .COLUMNS(I).HEADER1.CAPTION=FIELD(I)
               .COLUMNS(I).HEADER1.ALIGNMENT=2
               .COLUMNS(I).WIDTH=62
           ENDFOR
      ENDWITH
      WITH ="部门.部门名称"
         .ROWSOURCETYPE=6
      ENDWITH
   ENDPROC
   PROCEDURE COMBO1.INTERACTIVECHANGE
      SELECT 部门名称,班组名称 FROM 部门代码 WHERE ALLTRIM(部门名称)==ALLTRIM() INTO CURSOR TABNAME
      WITH =2
         .COLUMNWIDTHS="40,60"
         .ROWSOURCE="TABNAME"
         .ROWSOURCETYPE=2
         .DISPLAYVALUE=ALLTRIM(.LIST(1,2)) && 显示COMBO2的值
         .REQUERY
      ENDWITH
      THISFORM.CX
   ENDPROC
   PROCEDURE COMBO2.INTERACTIVECHANGE
      THIS.DISPLAYVALUE=THIS.LIST(THIS.LISTITEMID,2) && 修改COMBO2的值
      THISFORM.CX
   ENDPROC
   PROCEDURE CX && 显示查询结果
      SELECT 人员资料
      SET FILTER TO INLIST(ALLTRIM(班组名称),ALLTRIM())
      GO TOP IN 人员资料
      THISFORM.GRID1.REFRESH
   ENDPROC
   PROCEDURE DESTROY
      CLEAR EVENTS
   ENDPROC
ENDDEFINE

坚守VFP最后的阵地
2012-07-10 14:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
咦,你也来这一手?

授人以渔,不授人以鱼。
2012-07-10 15:01
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
以下是引用TonyDeng在2012-7-10 15:01:17的发言:

咦,你也来这一手?
三人行,必有吾师
这种PRG生成的表单,是不会打不开的,发挥空间巨大。

[ 本帖最后由 sdta 于 2012-7-10 15:36 编辑 ]

坚守VFP最后的阵地
2012-07-10 15:04
bsthq
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-8-25
得分:0 
谢谢老师的指导。不过本人水平有限,等我慢慢研究看看能不能弄懂,不清楚在请教老师。
2012-07-10 17:25
ntxscwk
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:118
专家分:352
注 册:2012-6-23
得分:0 
combo1的rowsource的值设为“部门”,rowsourcetype值设为“6-字段”;
combo2的rowsource的值设为“部门代码”,rowsourcetype值设为“6-字段”;


吃饭了,有空继续......
2012-07-28 11:41
ntxscwk
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:118
专家分:352
注 册:2012-6-23
得分:0 
通过表单控件增加表格(grid)控件,将该控件属性中recordsource设为“部门代码”,recordsourcetype设为“4-SQL说明”
combo2的interactivechange事件代码
  thisform.grid1.recordsource="select * from 部门代码 where 部门=


执行表单,comb2中选择了部门代码后,表格中自动调整为你想要的结果。我编过一类似表单,一直在正常使用。

大概可以,请高手指点。
2012-07-29 09:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-373084-1-1.html




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

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