在制作报表时,困扰用户最大的两个问题是: 1:数据的多源与分片; 2:报表层次嵌套并要有美观的对齐排列方式。
当出现多张报表要求整合在一起显示时,传统报表一般是设置主子报表来实现,但是这种方法表面上可以实现,却有诸多问题。
首先主子报表中,单元格插入子报表前必须设置的足够大,否则就会出现显示不完全的状况,也就是单元格不能根据子报表的大小自动扩展;其次子报表不支持多层嵌套,假如子报表中还有子报表,传统报表就无法进行展现。
FineReport根据客户需求,推出了聚合报表的概念和标准,专门用于解决这类大报表制作难点。聚合报表的概念是将多个分块同时放到一个报表里面,每一个块都类似一张单独的报表,而且报表之间相对独立,如报表布局(格子间不会相互牵扯、覆盖单元格等),相应模块之间依然可以传递数据。
聚合报表中的聚合块边界采用像素来定位,其高度、宽度均可设置是否固定,设置分页优先级决定优先按哪个聚合块分页。这不仅解决了嵌入主报表中子报表显示不止一页的问题,也使得复杂式报表的制作变得简单。由于这些聚合块相当于聚合报表中的一个控件,不同聚合块之间的数据交互也很方便:
模块之间独立使用
具体使用场景如图所示:
某铁路局需要将某日的运输收入列在左上方,下面会放上相应日期的技术站作业情况,这个时候,铁路局为了统计的方便,希望在右边分别展示按日、月、年各个线路的出入,难题出现了。在右边展示数据不难,难得是左边的位置不变,并且如果右边数据一页无法全部展示的话,希望只让右边的按时间统计的货车出入进行分页。
传统报表假如只想实现第一种效果,那么就需要合理的估算好右边报表所需要的空间大小,否则一旦数据比较多就无法显示完全,但是想只按照右边的报表进行分页,那就不可能了。
FineReport的聚合报表实现这种效果就很容易,上述一张很复杂难以实现的报表,在FineReport的设计器里面的样式如图所示:
可以看出报表设计很直观,其最终效果图就是上图所示。
单据类报表制作优势明显
传统工具利用主子报表制作如图2.33(2)所示的一张报表时,由于这种单据的复杂,为了最终效果符合对齐的要求,需要反复的去调整单元格的宽度,最终设计起来很是繁琐。如计划工作时间那一块,使用了17行,只能优先设计这一块的,再设计上面的标题和下面的具体内容,但是要想设计成图中右边部分,那么,调整起来的工作量呈几何倍的增长。
FineReport在制作这类报表的时候,采用的聚合报表解决这个问题就很轻松。首先产生这个问题的最大原因是因为报表不可能单独扩展一个格子,那么解决办法就是将上面的票据分为几个模块来制作,如图所示,
我们可以看到,中间计划工作时间这一块是单独的一个模块,那么整个报表就分成了如图所示的7个模块,制作起来工作量瞬间下降许多。
|