分页web报表如何统计当前页与其前几页的信息
Web报表分页显示是最常见的展示方式之一,快逸报表可以根据不同的条件来设置报表的分页,然而报表分页也带来了许多新的需求,如:如何只对当前页某列数据进行统计、如何对当前页及其前几页某列数据进行统计、以及如何实现对所有页某列数据的统计。
对当前页某列数据统计可以参考:http://www.quiee.com.cn/archives/1373
对所有页某列数据统计可以直接使用数据集函数,如:ds1.sum(某字段名)
而对于要求实现当前页及其前几页某列数据统计,快逸报表没有提供专门的函数实现,但是可以使用变通的方式,使用手动分组强制分页的方式实现该需求。这里的手动分组是指一组数据内让其显示固定条数的数据(如20条),用数据总条数/20就是分组的个数(如果总条数%2!=0,需要加1),然后在每组后面设置强制分页,这样就可实现每页固定显示20行数据的效果。
下面介绍快逸报表实现当前页及其前几页某列数据统计的报表复杂报表设计" target="_blank" class="quieeLink1">设计过程,以例子形式说明。
第一步:打开设计器,新建一张空白的报表,然后建一个内建数据集ds1,数据集很简单,只包含一个字段,并且我们也是对该字段进行统计,如下图:
其中,ID为数据集的字段名,数据类型为字符串,总共增加40条数据。
第二步:按每页展现20行数据,根据查询数据的总记录条数计算出总共分几页显示,本例中在A1单元格存放计算出的分页结果,表达式为:
=if(ds1.count()%20==0,int(ds1.count()/20),int(ds1.count()/20)+1)
第三步:根据上步中计算出的分页总页数,手动设置分组,本例中表达式写在A2单元格,为:=to(1,A1)。这一步的作用就是用分组模拟出分页。
第四步:按每页显示20条数据,分配查询每页的数据。
本例在B2单元格设置表达式为=to(1,20),这里实际作用相当于按行分页,每页20行数据。C3中表达式为=(A2-1)*20+B2,作用为生成所有数据的连续序列号。D4单元格为根据序列号生成的查询字段(ID)表达式。
第五步:计算数据
计算数据分当前页计算及当前页与前几页数据和。当前页数统计直接使用=sum(D2{}),而当前页与前几页的数据统计则需要用到层次坐标,这里设置表达式为=D3+D4[-1]。
第六步:设置模拟分页列A列与设置模拟每页显示20条数据列B列为隐藏列。
第七步:设置第4行为强制行后分页(如下图),实现分页效果。
报表设计完成后的效果图如下:
报表发布后,分页效果图如下(第一页):
然后看一下第二页,检验计算结果(如下图):
到此可以看到数据统计结果是正确的,实现了当前页与前几页数据求和的要求。