2019-1-16 水晶报表自动补空行

第一种:【详细资料】填充空白行。正常填充一个组可以,但是组行大于预设行会全部显示的。这里没有进行行的分页

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

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

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

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

进入节专家,在详细资料节中插入4个空节, 
 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
勾上这四节的"抑制显示" ,分别以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行
在每个新增节的最上面画一条横线来实现表格形式,不然就从上到下的一个大框了

  


好,看看效果 
 

第二种:【组尾】进行填充空白行,抑制显示同理

posted @   IT苦行僧-QF  阅读(768)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示