在 Crystal 报告 XI 中,根据子报告中可用的数据发布抑制报告 header

Issue to suppress report header based on data available in subreport, in Crystal Reports XI

我设计了包含以下部分的报告。

Page Header

Group Header#1

   Group Header#1a

   Group Header#1b

Group Header#2

Group Header#3
Group Header#4

Group Footer#4

Group Footer#3

Group Footer#2

Group Footer#1

    Group Footer #1a

    Group Footer #1b  --> this section contain subreport

    Group Footer #1c

在组页脚 #1b 中,我放置了一个子报表,该子报表通过一些参数与主报表链接。

子报表只有一个需要打印的图像控件,但它完全是有条件的,这意味着子报表可能会更改数据,因此不会打印任何图像。为此,我执行以下操作:

在子报告上,我单击文件>>报告选项并选中复选框 "suppress printing if no record" 然后在主报告上单击子报告并选择格式报告然后在子报告选项卡中选中复选框 "Suppress Blank Subreport"

同样对于该部分,我打开部分专家并选中复选框 "Suppress Blank Section"。

通过执行上述工作,如果没有数据或子报表为空白,则部分被抑制,但 header 仍然来自上一条记录并打印下一条记录。

由于没有人回答我的问题,经过多次研发我找到了解决方案,这是解决方案: 在页面 Header 中,我创建了一个共享变量并检查它是否为真然后抑制 header 否则不。

查看报告结构,在 Group Footer#1 中有复选框 'Reset Page Number After' 未选中。

在组页脚 #1a 中应用公式重置页码,然后检查下一组的数据,即组页脚 #1b 是否可用,如果可用,则 return false 否则重置页码true 重置页码,并在同一部分创建另一个公式,我再次创建与页面 header 中相同的共享变量,并根据下一节的数据是否可用将该变量设置为 false 或 true,然后拖动公式到组页脚 #1a 部分。

在包含子报告的组页脚 #1b 的最后一步中,我检查共享变量是否为 true,然后将其设置为 false。以便在打印部分 header 后再次可供打印。

以上所有步骤都解决了我的问题。