水晶报表自动补空行,补格线思路

对于自动补空行或格线的情况,一般出现在以下两种情况: 
1:清单类打印,最后一页数据不满时以空行或者格线填满 
UPDATE 2005年4月27日 
感谢奚彧的提醒,发现这篇文章,刚好是这种情况的说明 
http://blog.csdn.net/landlordh/archive/2005/02/05/281590.aspx 

幸亏自己没写,呵呵,不然可真是浪费了~~  
2:单据类,一般单据格式固定,如每张打印5行数据,不满处则以格线补满5行。 
UPDATE 2005年8月1日 
感谢bonheur的提醒,原文最后一组时公式错误


我们以第2种情况为例进行说明,因为第2种会了第1种也自然就明白了 
在这里我们使用模板公式来实现该功能,而不是用程序代码实现。 
该方法并不是很灵活,欢迎大家进行讨论。 

非常感谢CSDN的阿土及飞翔的心对本文的贡献  
我在这里只担当一个文章整理及讲解的角色,现在开始 

我们现在有张单据是这样的,这是我用Word做出来的 
 

对于这种单据,我们一般采用定制纸型的方式,将执行设置为与单据规格一样的纸型 
这里我这步就省略了。 

构造如下数据 
 
我们在做的时候,以"品牌"进行分组。 
本模板中假定每组的数据不超过每张凭证的最大行数。 

我们按正常步骤做一个按品牌进行分组的模板 
并且设置每页显示一组 
Groupnumber mod 1=0 

进入节专家,在详细资料节中插入4个空节, 
 
勾上这四节的"抑制显示" ,分别以Crystal语法写入以下公式 
详细资料b 
If  onlastrecord   Then  
    
If  COUNT({材料采购明细.材料名称},{材料采购明细.品牌})< 5   Then  
       
False  
    
Else  
      
True  
Else  
    COUNT({材料采购明细.材料名称},{材料采购明细.品牌})
>= 5    Or  ( Next ({材料采购明细.品牌}) = {材料采购明细.品牌})

对该节公式做一下说明 
如果当前记录是最后一条记录 
   判断该组的条数是否>=5 如果符合,则不一致显示(也就是显示);否则,一致显示 
如果不是最后一条记录 
  如果该组条数>=5 或者 下一条记录与本条记录是同一组的,则抑制显示 

通俗点说就是这样的 
一共有5个节,第一节有数据则填充,没数据当然就不填充了 
然后开始判断第2个节 
对于第2个节,如果该组的总记录条数大于>=5条,则前面的第一个节就已经填充满了,此处就不必要显示了(True) 
同样的,如果下一个记录与本条记录的值一样的话,那么说明后面还有数据,也就不用显示了(True) 
但是对于最后一条数据,需要特别处理 
最后一条数据的后面就没有数据了 
所以如果条数>=5的话,那么前一个节肯定没填充满,所以就显示该节(False) 
否则,如果条数不足5条的话,则前面已经处理完了(在前一轮循环中),就不显示该节了(True) 

详细资料c 
If  onlastrecord   Then  
    
If  COUNT({材料采购明细.材料名称},{材料采购明细.品牌})< 4   Then  
       
False  
    
Else  
      
True  
Else  
    COUNT({材料采购明细.材料名称},{材料采购明细.品牌})
>= 4    Or  ( Next ({材料采购明细.品牌}) = {材料采购明细.品牌})

详细资料d 
If  onlastrecord   Then  
    
If  COUNT({材料采购明细.材料名称},{材料采购明细.品牌}) < 3   Then  
       
False  
    
Else  
      
True  
Else  
    COUNT({材料采购明细.材料名称},{材料采购明细.品牌})
>= 3    Or  ( Next ({材料采购明细.品牌}) = {材料采购明细.品牌})

详细资料e 
If  onlastrecord   Then  
    
If  COUNT({材料采购明细.材料名称},{材料采购明细.品牌})< 2   Then  
       
False  
    
Else  
      
True  
Else  
    COUNT({材料采购明细.材料名称},{材料采购明细.品牌})
>= 2    Or  ( Next ({材料采购明细.品牌}) = {材料采购明细.品牌})

这个时候模板中就增加了4行 
在每个新增节的最上面画一条横线来实现表格形式,不然就从上到下的一个大框了 

好,看看效果 
 
  
下载模板文件 
http://files.cnblogs.com/babyt/Crystal1.rar  

本文写得比较仓促,心里感觉不塌实 
可能有不少不足之处,欢迎大家进行讨论 
我有时间的话也会静下心来好好再看一下 

-------Over------------------ 
希望这篇文章对你有所帮助。 
阿泰 20050414 

阅读本文后,请务必阅读修正文章
http://www.cnblogs.com/babyt/archive/2008/01/27/1055334.html 
阿泰 20080127
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值