Crystal Reports XI - 根据子组的抑制状态抑制组头

时间:2012-08-03 10:24:02

标签: crystal-reports

我有一个相当简单的问题,尽管经过了数小时的网络搜索,我还是没有成功为自己锻炼。

我有一个包含来自几千台设备(记录器)的带时间戳数据的报告,以合理的方式呈现数据,我在报告中设置了两个组;记录器和时间戳,因此数据首先按记录器ID分组,然后按时间戳工作正常

Group 1 Logger 1
  Group 2 Timestamp 01/08/2012
    Data...
    Data...
    Data...
  Group 2 Timestamp 02/08/2012
    Data...
    Data...
Group 1 Logger 2
  Group 2 Timestamp 01/08/2012
    Data...
    Data...
    Data...

现在数据(详细信息)字段对用户是隐藏的,如果每个组中有4个或更多记录,我只想显示组-2的标题。为实现这一点,我在group-2

上使用了以下抑制公式
Count ({GMAC_spDg2Report;1.tTimeStamp}, {GMAC_spDg2Report;1.tTimeStamp}, "daily") < 4

诀窍是,某些1级组中所有组2标题都被抑制,在这种情况下,我也想隐藏group-1标题。 使用与组1中的组-2相同的抑制配方没有产生期望的结果。我还试图在group-1页脚中使用一个运行总计(称为{#Count Unsupressed Days})并使用不同的计数,并在每个组-1上重置下面的公式

Count ({GMAC_spDg2Report;1.strLogger}, {GMAC_spDg2Report;1.tTimeStamp}, "daily") > 4

如果该组具有未被抑制的子组,则返回1-group-1页脚中的1,如果所有组2标题都被抑制,则返回0。

所以这是CHALLENGE,我似乎无法使用运行总计的输出在group-1的标头中应用抑制规则。 为了演示这个问题,我创建了一个公式字段,该字段仅包含运行总计的输出,并将其放在group-1标头中。 结果很难说至少......公式字段与运行总计没有显示相同的值,因此抑制规则不起作用。

我希望这有点意义......我觉得我已经尝试了一切

2 个答案:

答案 0 :(得分:1)

我没有明确的解决方案,但使用以

开头的公式字段
WhilePrintingRecords;
...

在读取所有记录后,将处理公式,因此您可以在节标题中使用它并获得正确的结果。
现在存在找到一个对你有用的公式逻辑的问题,但也许这第一步可以帮助你朝着正确的方向发展。

答案 1 :(得分:0)

我曾遇到过类似的问题。我记得,诀窍是检查每个细节部分中的Suppress blank section并检查组标题部分中的类似声音选项Suppress blank group(?)。

抱歉,我不能给你确切的名字,很久以前,我使用的是德语版本。但我知道,如果没有公式,它是可能的。

我认为你不能使用子报告。如果您这样做,请注意,只有当子报表选中Suppress empty report(?)以及我上面写的内容时,该技巧才有效。