做一个资产打印的报表,由于资产打印按资产分类有多种打印模式,所以在批量打印时,需要分别调用改分类对应的模板,如果有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分,怎么追加分?  求正解  ,谢谢