以下是引用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