做一个资产打印的报表,由于资产打印按资产分类有多种打印模式,所以在批量打印时,需要分别调用改分类对应的模板,如果有N条记录,就需要做N个报表,把报表复合(frxReport1.PrepareReport(False);)再一次性打印出来(frxReport1.ShowPreparedReport;)。 每种报表模板打印格式不对,但是对应的数据源是一样的(cdsData)的,所以每次加载一个模板后就要先过滤cdsData,后又要恢复,这样搞效率很慢,打印N条记录,就要过滤cdsData N次。 应该怎么修改设计???
我的代码:
var
cdsData:TClientDataSet;
frxReport1: TfrxReport;
frxDBDataset1: TfrxDBDataset;
frxDBDataset1.dataset:=cdsData;
try
frxReport1.LoadFromFile(StreamList.Values[ModeCode]);
cdsData.Filtered:=False;
cdsData.Filter:='ZCKB_ZCCODE='+QuotedStr(sZcCode);//过滤
cdsData.Filtered:=True;
frxReport1.PrepareReport(False);
finally
cdsData.Filtered:=False;
cdsData.Filter:=sFilter;//恢复过滤
cdsData.Filtered:=True;
cdsData.Locate('ZCKB_ZCCODE',sZcCode,[loCaseInsensitive]);
end;另外, 复合报表是不是有最大复合数设置??为何我复合多张报表(PrepareReport(False);)后,frxReport1.ShowPreparedReport;时只打印了一部分出来?只能发100分,怎么追加分? 求正解 ,谢谢
我的代码:
var
cdsData:TClientDataSet;
frxReport1: TfrxReport;
frxDBDataset1: TfrxDBDataset;
frxDBDataset1.dataset:=cdsData;
try
frxReport1.LoadFromFile(StreamList.Values[ModeCode]);
cdsData.Filtered:=False;
cdsData.Filter:='ZCKB_ZCCODE='+QuotedStr(sZcCode);//过滤
cdsData.Filtered:=True;
frxReport1.PrepareReport(False);
finally
cdsData.Filtered:=False;
cdsData.Filter:=sFilter;//恢复过滤
cdsData.Filtered:=True;
cdsData.Locate('ZCKB_ZCCODE',sZcCode,[loCaseInsensitive]);
end;另外, 复合报表是不是有最大复合数设置??为何我复合多张报表(PrepareReport(False);)后,frxReport1.ShowPreparedReport;时只打印了一部分出来?只能发100分,怎么追加分? 求正解 ,谢谢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货