简单的报表的问题,急急急!!!!(100分)

  • 主题发起人 主题发起人 fat-cat
  • 开始时间 开始时间
F

fat-cat

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是Qreport做报表,我想每页只固定的显示7条记录,就是固定的样式,怎么做呢?
 
自己判断,超过一到第8条就,NewPage,有这样的过程可以直接使用。
 
to sisha:能具体的说一说吗?很急的,第一次用!
 
我想知道报表的详细使用方法。
 
我的思路:
1、在报表中申明一个变量,用于计数;
2、在报表标题的AfterPrint事件中为这个数值付零;
3、在DetailBand的AfterPrint事件中为这个数值加1;
4、在DetailBand的BeforePrint事件为判断是否要分页。
 
实现:
unit Unit2;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
StdCtrls, ExtCtrls, Forms, QuickRpt, QRCtrls, Db, DBTables;
type
TForm2 = class(TForm)
QuickRep1: TQuickRep;
PageFooterBand1: TQRBand;
QRExpr1: TQRExpr;
ColumnHeaderBand1: TQRBand;
DetailBand1: TQRBand;
QRLabel1: TQRLabel;
QRExpr2: TQRExpr;
QRLabel2: TQRLabel;
QRExpr3: TQRExpr;
QRLabel3: TQRLabel;
QRExpr4: TQRExpr;
QRLabel4: TQRLabel;
QRExpr5: TQRExpr;
QRLabel5: TQRLabel;
QRExpr6: TQRExpr;
QRLabel6: TQRLabel;
QRExpr7: TQRExpr;
QRLabel7: TQRLabel;
QRExpr8: TQRExpr;
Table1: TTable;
procedure ColumnHeaderBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
procedure DetailBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
procedure DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
private
i:Integer;//计数器
end;

var
Form2: TForm2;
implementation
{$R *.DFM}
procedure TForm2.ColumnHeaderBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
i:=0;//新的一页付零值
DetailBand1.ForceNewPage:=false;//不分页
end;

procedure TForm2.DetailBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
i:=i+1;
end;

procedure TForm2.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
if i = 6 then
DetailBand1.ForceNewPage:=true;//第七条的时候分页
end;

end.
 
Sorry,刚才测试数据较少,现在发现有Bug!还是Sisha兄的简单!
新版本:申明与上面相同,但只响应DetailBand的AfterPrint事件。
procedure TForm2.DetailBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
i:=i+1;
if i = 7 then
begin
i:=0;
QuickRep1.NewPage;
end;
end;
 
to sisha :
to 杜宝:
是的,这样可以设定固定的行数了,但是除了第一页以外,后续的页只是数据,
没有报表的标题栏和columnheaderband了,我想要的是每一页的格式都是完全
一样的,怎么解决呢,谢谢
 
你在PageHeaderBand就可以每页显示出来了。
 
为何不用自定义纸张大小? 只要调整几次纸张的HEIGHT,使其刚好只能打印7条记录,不用写代码,也可使FOOTER PAGE
内容紧接DETAIL BAND之后,节省纸张。
 
to sisha:再帮我,为什么我设定固定的行数以后,预览是7行,而打印的时候却只是三行
,这是什么原因???????
 
如果我是你,我一定不直接使用数据集,而是将数据读到变量中给QR的标签赋值。
工作量只是稍大一点,可是逻辑就简单了。
 
同意上面的观点,
直接用标签。
 
但是预览的时候完全正常,就是打印的时候不一样
 
用FastReport
 
高手,来帮我,就只差这么一点了
 
你把代码贴出来。
 
后退
顶部