【分享】水晶报表组内分页
本文为:http://topic.csdn.net/u/20110824/21/60f3c6d5-ae0a-454f-989a-984e20f0a7a7.html所作。
命题整理如下:
报表使用了分组,一个组的数据会跨好几页,要单独显示某组显示到【第几页/共几页】
效果类似于:
这是一个综合工程,我们要逐步来拆解一下。
本文使用水晶报表2008操作,其余版本类似。
1:首先,是按照某个字段来分组
这个就不多说了,我用的是水晶报表自带示例库的产品表,用颜色字段进行分组。
2:每页显示5行数据,且每页的上都要显示组页眉,不同的组不能显示在同一页上。也就是组和组之间是的分离
(1)每页显示5行设置
如果是CR2008之前的版本,使用公式 RecordNumber Mod 5=0
(2)每组上都要显示组页眉
(3)每个组单独占一页,不混合显示。
也就是1页显示5行,如果组a有1行,组b有2行,他们要分别占据1页,而不是合在1页上显示。
如果是CR2008之前的版本,使用公式 GroupNumber Mod 1=0
3:使用运行时总和为每组数据单独编号
把这个运行总和字段做到模板上看看效果。分别拖到详细资料节和组页眉
可以看到,放在组页眉上的序号,其实就是在该页上第一条记录在组内的序号。
4:组内分页基本原理
现在我们能拿到单独的组内序号了,那么,怎么去用来分页呢。
想一下,假设我们每组记录数目为N(当然,N是变化的),如果存在多页的话,因为是5行一分页
那么对一个组来说,每页第一条的序号分别为1、6、11.。
也就是【5的倍数+1】。
那么我们的公式其实就出来了,
我们以每页组页眉上的那条为基准,也就是每页的第一条为基准,序号 除以 5,取整再 +1 即可。
公式如下
效果如下
公式中的几个点特别说明一下Count(字段,分组字段) 表示组小计计数
RoundUp(x)是向上取整,比如x=5则为5,5.1则为6.
------解决方案--------------------学习了
------解决方案--------------------严重学习,谢谢,从开始学,到现在懂一点,都是从秦哥这里一点一点过来的
慢慢人生路,还好有前辈们的不断努力,进取
严重支持
------解决方案--------------------顶顶更健康。
------解决方案--------------------
------解决方案--------------------谢谢泰哥分享,学习了!
------解决方案--------------------非常感谢泰哥的无私奉献。感激涕零。