FastReport报表固定行不足补空行且每页小计最后一页合计

本文介绍了如何使用FastReport报表设计器创建报表,包括设置报表表头、主数据绑定、添加栏首和栏尾,特别是如何利用子区域补空行以达到固定行数效果,以及在栏尾实现每页小计和最后一页合计的功能。
摘要由CSDN通过智能技术生成

1、报表设计器内添加一个页首PageHeader,用于添加报表的表头;

2、在页首区域添加几个带边框的Memo,把每个Memo靠在一起形成报表表头;

3、添加一个栏首;

4、添加一个主数据MasterData(我的是MasterData3),并绑定好数据集;

5、复制页首区域的Memo报表表头对齐粘贴到主数据MasterData,并绑定好对应字段;

6、添加一个子Child,用于补空行。复制页首区域的Memo报表表头对齐粘贴到该子区域,并清空所有Memo的text数据,形成一个空白行;

7、添加一个栏尾ColumnFooter,该区域放入一个带边框的Memo(我的是Memo8),用于每页小计和最后页合计;

Page页报表设计器如下图所示:

8、切换到代码编辑窗口,粘贴以下代码:

var
aa:Integer;
maxRow:Integer;

procedure Page3OnManualBuild(Sender: TfrxComponent);
var
  DataSet: TfrxDataSet;
begin
  DataSet := MasterData3.DataSet;
  DataSet.First;
  Memo18.text:='小计:'+IntToStr(maxRow);   //每页表格结尾小计   
    
  while (not DataSet.Eof) or ((aa-1) mod MaxRow<>0) do //循环数据集  
  begin      
    if DataSet.Eof then//数据集已循环完毕
    begin
      Engine.ShowBand(Child1);//补充空白行                                   
      Memo18.text:='小计:'+floattostr(<当前行号> mod MaxRow)+'条'+'           '+'合计:'+floattostr(<当前行号>)+'条';        //最后一页表格结尾小计和合计                   
    end
    else Engine.ShowBand(MasterData3);//数据集没循环完毕则继续循环每一条数据
      DataSet.Next;

   inc(aa); //变量aa自动+1        
   if (((aa-1) mod (MaxRow)=0) and (not DataSet.Eof)) then//当数据循环到设定的固定行数,且数据集还没到最后一条时  
    begin                 
      EngIne.Newpage; //一个页面的表格显示不完数据时就创建一个新的页面来显示剩下的数据                         
    end
  end;
end;

begin
  aa:=1;
  maxRow:=20; //每页显示的表格固定行数
end.

9、Page事件的OnManualBuild框内输入Page3OnManualBuild,保存。(注意:我这里的是Page3,各位根据自己是第几个Page页面自行调整)如下图所示:

10、预览效果如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值