有一个方法:
1、不要设置 QuickRep 的 DataSet 属性。
2、然后将 QRDBText 换成 QRLabel,
3、处理 QuickRep 的 NeedData 事件,手工将数据集中的记录指针向后移动,如
procedure TQuickReport1.QuickRepNeedData(Sender: TObject;
var MoreData: Boolean);
begin
if not table1.eof then
//未遍历完数据集
begin
if not table1.bof then
//第一条记录时不必调用 next
table1.next;
MoreData := True;
//还要打印Detailband
end
else
if 页面有空白(此时数据集中数据已打完) then
MoreData := True //还要打印 Detailband
else
MoreData := False;
//结束
end
4、再在各 QrLabel 的 OnPrint 事件中设置它显示的值,如
procedure TQuickReport1.QRLabel1Print(Sender: TObject;
var Value: string);
begin
if Not Table1.Eof then
Value := Table1.FieldByName('First').AsString //手工设置打印出的字符串
else
Value := ' ';
//此时是在补足页面的空白部分
end;
注意在 QuickRep Preview 或 Print 之前将数据集激活并调用 First。
这种办法也可用于与数据集无关的数据打印。