水晶报表自动补空行

来源:互联网 发布:geek软件 编辑:程序博客网 时间:2024/04/30 05:50

之前我在原来的基础上构造了数据,现在A组数据有8条数据,B10,C,D均少于5条,E刚好5

1
、首先我们画出模板,假设你也是显示5行,那么,就用一个详细资料节,然后,将组页脚拆分成4
本例中,因为使用了一个固定的页脚显示合计,所以是拆分成5个的,最后一个节固定显示

这里使用了一个运行时总计字段 ,用以跟踪每条记录在组中的序号,组变更时,记录重新编号,用途在后面的说明。

为了直观些,我把这个字段拖到了界面上,实际操作时,你可以将这个字段抑制显示掉
模板中的红字是为了显示得更直观加上去的,实际使用时删除掉即可。

思路是这样的,如果一组数据,除以5剩余的部分,肯定是1234,分别处理这几种情况
当剩余4条的时候,显示组页脚a3的时候显示b2的时候显示c1的时候显示d,补满。
对于刚好5条的情况,在后面说明

特别注意:画线的问题。如果你不注意此接,你会注意到,你的线可能会乱七八糟
请注意!在出现分组的情况,或者需要根据需要进行运行时抑制显示控制时,务必将竖线,控制在一个节内,不可跨接。
注意竖线的节点只能出现在自己所在节的两个边界内,不可出现在边界外!
本文中的例子我偷了点懒,因为我知道什么时候会出问题什么时候不会,如果你不确定,请依照以上规则

2
、分页控制
本例子有两种分页控制,一种是组分页,一种是一组数据大于5条时,每5条的分页
组分页可以在组页眉和组页脚上设置,本文中组页脚承担了另外的补空格任务,所以分页在组页眉上
增加一个公式

groupnumber mod 1=0



即每一个分组都换页

然后在详细资料节上设置公式,使每5条分一页

//此处需要注意
//
因为我们在分组上已经加了一个分页了,这里是组内的辅助分页
//
//
如果记录是5的倍数,则是分页时机,但是要另外注意
if {#RTotal0} mod 5 =0 then
    //
如果此时是组内的最后一条记录,则此处不进行分页,因为会有一个组分页替换该
 if  Count ({
材料采购明细.材料名称}, {材料采购明细.品牌}) ={#RTotal0} then
    false
 else
    true
else
    false



Count ({
材料采购明细.材料名称}, {材料采购明细.品牌})  表示按组品牌分组后每组的记录个数
{#RTotal0}  
表示当前的记录需要
用以跟踪每组的最后一条记录,用以处理如果刚好是5的倍数的时候,出现详细资料节与组出现重复分页的情况

3
、设置补充行显示,以组页脚a为例子,当之前显示4条,需要补充1个空行时,此节显示

//组的最后一条记录
if Count ({
材料采购明细.材料名称}, {材料采购明细.品牌}) mod 5>0 and Count ({材料采购明细.材料名称}, {材料采购明细.品牌}) mod 5<=4 then
    false
else
    true