表里的一条记录,四个字段:A,B,C,D
A打印在第一页(如果A为空时,第一页不打印)
B打印在第二页(如果B为空时,第二页不打印)
C打印在第三页(如果C为空时,第三页不打印)
D打印在第四页(如果D为空时,第四页不打印)如何实现,如有其它报表工具(水晶报表也行)可以实现也行,

解决方案 »

  1.   

    //试试...
    var
      Page:   TfrxReportPage;
      Memo:   TfrxMemoView;
      tl:tstringlist;
    begin
      
      tl := tstringlist.create;
      
      //自行把数据记录中的字段插入tl
      //......
      
      
      frxReport1.Clear;
      
      
      for i := 0 to tl.count-1 do
      begin
        if (tl.strings[i]<>'') then
        begin
          Page   :=   TfrxReportPage.Create(frxReport1);
      
          Page.CreateUniqueName;
      
          Page.SetDefaults;
          //自行设置纸张大小
          //......
          Memo   :=   TfrxMemoView.Create(Page);
          Memo.CreateUniqueName;
          Memo.Text   :=   s1;
          Memo.left :=0;  
          Memo.Top :=0;
          Memo.width   :=   100;  
          Memo.Height   :=   100;      //其它属性设置,如Memo.Font := ...;
        end;
      end;  
      
      tl.free;
    end;
      

  2.   

    说明一下:
    我已经做好了四页报表,能不能自己按照上面说的要求根据字段是否为空来进行选择呢?
    因为如果每页报表还有其它的一些信息各不相同如果只是单一A,B,C,D字段的话,dragonki(dragonki) 的答案应该可以解决!谢谢!
      

  3.   

    while not eof do
        begin
          if ...then
          begin
            frReport1.PrepareReport;
            frReport_all.EMFPages.AddFrom(frReport1);
          end;
          if ...then
          begin
            frReport.....PrepareReport;
            frReport_all.EMFPages.AddFrom(frReport1.....);
          end;
          ....
        end;
      frReport_all.ShowPreparedReport   ;自己组合页