关于空行打印(200分)

  • 主题发起人 主题发起人 OHT
  • 开始时间 开始时间
O

OHT

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手:
我在用DELPHI6自带的控件QREPORT的时候遇到一个问题,客户要求在没有数据的情况下
一张纸也要打印表格。或者是在只有1条记录的情况下。整页A4纸上也要有空白的表格存在!
谢谢,高分:200!!
 
用FASTREPORT或REPORT MACHINE,看DEMO,扔掉QREPORT
 
QREPORT我暂时还不能扔啊。我的意思就是在DELPHI的报表中,如何实现一个记录占一页纸
 
使用QuickReport也可以实现。
设置QuickReport的Dataset为空,然后在他的OnNeedData里面写事件,手工设置Query.Next,设置MoreData:=True or False来决定是否继续打印。
同时需要注意的是:1、你需要在BeforePrint里面进行数据集合初始化。Query.First
2、需要自己给Detail上面的控件赋值。QrLabel1.Caption:=...
3、自己设置全局变量来判断当前是否打印满整页来决定MoreData的数值。
 
哈哈,我知道你的意思,看来你比较勤快,我是哪个方便就用那个.
目前我选择从FAST REPORT 改进来的REPORT MACHINE,很爽啊!
 
yzhshi,你说的办法比较麻烦,难道没有其他简单的吗?
或者你可以给我写以下OnNeedData事件如何写吗?我用的是TABLE不是QUERY!
 
Table也可以。
还有一个办法就是象Table/Query中加入空记录。
 
增加空记录那样不是要修改数据库了吗?况且在哪个事件加?
 
Pipi大虾的方法,偷来贴一下,呵呵:
quickrep可以支持自己提供数据,而不是由dataset自动提供数据。
自己提供数据的作用是:可以自己决定要输出哪些记录、可以由自己的
数组而不是数据库提供数据输出报表、可以任意添加记录使报表用空行填
满一页。
做法是:
把quickrep.DataSet设置为空,将报表内的TQRDBText换为普通的TQRLabel
写 QuickRep.OnNeedData 事件,在事件内,检查你的daatset是否到了 eof
如果不是eof的话,用dataset各个field的值为每一个 QRLabel.Caption 手工赋值,
然后dataset.Next
如果dataset已经是eof,那么看是否需要填充空行,需要填充空行的话,将各个
Label.Caption:=''
上面2种情况,事件的一个参数 MoreData:=true 使quickrep能打印这行
如果数据也完了、空行也打完了,那么 MoreData:=false ,就结束了。
 
forgot2002 ,谢谢你的方法。我看明白了,可就是觉得如果用此法的话,我也许工作量很大
的,会重新改所有的打印报表,希望那位大虾提供简单的方法。
 
据说最简单的办法就是使用FastReport,那个里面有参数可以设置!
但是在QuickReport里面,你放心吧,就乖乖的使用QuickReport的OnNeedData事件吧。
可以说,真正使用QuickReport的人,基本都会涉及QuickReport的OnNeedData事件的。
如果你真正想学会使用QuickReport,那么就去勇敢的学!
 
多人接受答案了。
 
后退
顶部