可以的,在 DetailBand 中用 QRLabel(非 Data aware) 代替 QRDBText (Data aware) 控件
然后在 QuickRep 的 OnNeedData 事件中写代码,将 DataSet 中记录字段的值手工赋给
QRLabel.
procedure TQuickRep1.OnNeedData(Sender: TObject;var MoreData: Boolean);
begin
if DataSet.Eof then
begin
QRLabel1.Caption := '';
QRLabel2.Caption := '';
MoreData := False //已到 DataSet 末尾,再无数据可打印
end
else
begin
//QRLabel1, QRlabel2 放在 DetailBand 上
QRLabel1.Caption := DataSet.FieldByName('字段1').AsString;
DataSet.Next;
//取得下一条记录
if DataSet.Eof then
begin
MoreData := False;
//再检测是否已遍历完 DataSet
QRLabel2.Caption := '';
end;
QRLabel2.Caption := DataSet.FieldByName('字段1').AsString;
DataSet.Next;
MoreData := True;
//还可以往下遍历 DataSet
end;
end;
注意 Print 前 Open DataSet.
这样,在一个 detail 行 中就打出了两笔记录的值.以前应该也讨论过的,可以搜索一下.