当前位置: 代码迷 >> .NET报表 >> 水晶报表组内分页
  详细解决方案

水晶报表组内分页

热度:1909   发布时间:2013-02-25 00:00:00.0
【分享】水晶报表组内分页
本文为:http://topic.csdn.net/u/20110824/21/60f3c6d5-ae0a-454f-989a-984e20f0a7a7所作。

命题整理如下:
报表使用了分组,一个组的数据会跨好几页,要单独显示某组显示到【第几页/共几页】
效果类似于:


这是一个综合工程,我们要逐步来拆解一下。

本文使用水晶报表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.

------解决方案--------------------------------------------------------
学习了
------解决方案--------------------------------------------------------
严重学习,谢谢,从开始学,到现在懂一点,都是从秦哥这里一点一点过来的


慢慢人生路,还好有前辈们的不断努力,进取

严重支持
------解决方案--------------------------------------------------------
顶顶更健康。
------解决方案--------------------------------------------------------
探讨
顶顶更健康。

------解决方案--------------------------------------------------------
谢谢泰哥分享,学习了!
------解决方案--------------------------------------------------------
非常感谢泰哥的无私奉献。感激涕零。
  相关解决方案