1. 概述
1.1 版本
报表服务器版本 |
---|
11.0 |
1.2 问题描述
文档 每页显示固定行数 中,通过「条件属性>行后分页」实现了每页显示固定行数,但在其基础上实现 页内合计 时,使用「重复结尾行」设置「页合计」,会出现页合计重复出现的问题。如下图所示:
那么要如何实现固定行数报表中,页合计、组合计、总合计正常显示呢?
1.3 解决思路
利用高级分组写分组公式,在条件属性中设置「行前分页」,再进行合计。
2. 示例
2.1 打开模板
打开模板:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Pagination\按组分页.cpt。
2.2 设置分组
模板 按组分页.cpt 中一个组的数据是一个「货主地区」的全部数据,这里将其每个组的数据再分为每 5 条数据为一组。
1)在报表最左侧插入一列,选中 A5 单元格,拖入数据列「订单 ID」,「单元格属性>扩展」中设置扩展方向为「纵向扩展」,左父格为 B4 单元格。如下图所示:
3)设置 A5 单元格的「单元格元素>数据设置」为「分组>高级」,点击「自定义」,选择「公式分组」,显示模式为「普通分组」,自定义值输入公式:CEILING(INARRAY($$$,ds1.group(订单ID))/5) 。即每 5 条数据为 1 组,组序号从 1 开始。
公式说明如下表所示:
公式 | 说明 |
---|---|
ds1.group(订单ID) | 选出数据集 ds1 中订单 ID 的数据并分组 |
INARRAY($$$,ds1.group(订单ID))/5 | 返回当前值在数组中的位置,再除以 5 |
CEILING() | 将参数沿绝对值增大的方向,舍入为最接近的整数 |
步骤如下图所示:
3)修改 B5 单元格的左父格为 A5 单元格(即默认)。如下图所示:
2.3 汇总计算
针对「应付金额」数据列作合计,下面分别介绍三种合计设置。
2.3.1 页合计
「货主地区」下每一小组订单记录就为一页,页合计即对每一小组数据进行汇总。
1)合并 B6~D6 单元格,插入文本:「页合计:」,左父格为 A5,不扩展,如下图所示:
2)选择 E6 单元格,选择「单元格元素>插入公式」,公式为:sum(E5)。如下图所示:
2.3.2 组合计
对每个「货主地区」的所有数据进行汇总。
1)合并 B7~D7 单元格,插入文本:「组合计:」,左父格为 B4,不扩展,如下图所示:
2)在 E7 单元格,选择「单元格元素>插入公式」,公式为:插入公式sum(E5)。如下图所示:
2.3.3 总合计
所有数据都扩展完后进行总计。
合并 B8~D8 单元格,插入文本:「总合计:」,E8 单元格选择「单元格元素>插入公式」,公式为:sum(E5)。如下图所示:
2.4 设置分页
此时预览模板,每一小组还是显示在一页上面,因此需要设置分页。
选中 A5 单元格选择「条件属性」,添加属性「分页」,选择「行前分页」,条件类型选择「普通」,操作符选择「不等于整型 1」,即每个地区下从小组序号为 2 的小组开始「行前分页」,如下图所示:
2.5 隐藏列
设置完成后隐藏 A 列。
2.6 效果预览
2.6.1 PC 端
保存模板,点击「分页预览」,效果如下图所示:
2.6.2 移动端
App 端和 HTML5 端均支持,效果如下图所示:
2.7 补充:设置页码
问题描述
上述已完成模板,以货主地区来进行分页,每页 5 条数据,此时若想要知道这是某个地区的第几页和这个地区共有几页,那么该如何生实现呢?
解决方案
1)在报表下方插入两个表示页码的公式:D10 单元格为{A5},表示某地区当前页数;E10 单元格为"/" + count(A5),表示获取该地区的页码有几页,"/" 起分隔符的作用。
2)设置 D10、E10 单元格的左父格均为「货主地区」所在的 B4 单元格,并将第 10 行设置为重复结尾行。
3)由于重复结尾行的影响,需将总合计所在 B8、E8 单元格的左父格设置为 A11,并且在 A11 单元格中添加一个空格,使第 11 行为「空白编辑行」。
如下图所示:
4)保存报表,点击「分页预览」,即可看到当前地区的页码数:
注:也可以通过页码公式进行页码的显示,可参考: 根据分组设置页码
3. 模板下载
已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Pagination\分组分页合计.cpt
点击下载模板:分组分页合计.cpt