主题:查询后打印一对多报表
hrduan268
[专家分:0] 发布于 2009-11-11 09:08:00
客户表为父表,走访表为子表,已经创建一对多报表。点查询后,表格显示的是查询客户表的结果,现想把查询的结果打印出来----客户表和走访表都打出(即查询到的)。不知该怎么写。
客户表:
客户编号 客户姓名 性别 地址
1 张三 男 北京
2 李四 男 上海
走访表:
客户编号 走访日期 走访活动
1 2009/10/10 无
1 2009/10/05 有
2 2009/11/10 有
如查询张三,则一对多报表显示:
客户编号 客户姓名 性别 地址
1 张三 男 北京
客户编号 走访日期 走访活动
1 2009/10/10 无
1 2009/10/05 有
最后更新于:2009-11-18 20:56:00
回复列表 (共5个回复)
沙发
hrduan268 [专家分:0] 发布于 2009-11-11 09:11:00
在数据库中建立一个与客户表结构完全一样的表temp,利用一对多报表向导创建temp与走访表的一对多报表temp.frx。
每次表单init和退出时,把temp表zap掉;每次点查询时,也先把temp表zap掉。
查询click事件:
..
select * from 客户表 where ... into cursor temp1
insert into temp select * from temp1 &&复制查询结果到temp
...
打印click:
select temp
report form temp.frx to printer preview
感觉这种方法不好,强行退出会使temp损坏。
板凳
hrduan268 [专家分:0] 发布于 2009-11-11 09:19:00
能否在运行时,把临时表temp和走访表添加到temp.frx报表的数据环境,并建立关系?
select * from 客户表 where ... into cursor temp &&temp是临时表
...
... &&把临时表temp和走访表添加到temp.frx报表的数据环境,并以客户编号建立关系
select temp
report form temp.frx to printer preview
这该怎么写呀?说得好,马上加分!
3 楼
hrduan268 [专家分:0] 发布于 2009-11-12 21:20:00
没人知?
4 楼
sywzs [专家分:5650] 发布于 2009-11-13 06:01:00
SELECT a.客户编号,b.走访日期,b.走访活动 FROM 客户表 a,走访表 b WHERE b.客户编号=a.客户编号 ORDER BY b.客户编号 INTO CURSOR TMP
REPORT FORM TEMP TO PRINT PROMPT &&打印
REPORT FORM TEMP PREVIEW &&预览
5 楼
hrduan268 [专家分:0] 发布于 2009-11-18 20:55:00
照4楼的去做,达不到想要的效果。
如在附件中输入查询条件---性别:男,报表预览应显示所有性别为男的客户信息,并显示与之对应的走访信息。
我来回复