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、预览效果如下图所示: