sos!各位救急:QuikReport 可以在一行中打印同一表中的两条以上的纪录吗?200分!!!(200分)

  • 主题发起人 主题发起人 bbg
  • 开始时间 开始时间
可以的,在 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 行 中就打出了两笔记录的值.以前应该也讨论过的,可以搜索一下.
 
或者你可以通过查询把记录放在一个表中。那个表一条记录就放你要打印的表的两条记
录就可以了。例如:
A表(你的原始表):字段1,字段2;
B表(现在要打印的表):字段1,字段2,字段1,字段2;
然后通过程序FOR循环,每格A表两条记录就读出放入B表中,完后在QuickRep调用B表就可
以了。
怎么样?:)
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部