【问题标题】:Crystal Reports 2008: Suppress Group Header when details are suppressedCrystal Reports 2008:抑制详细信息时抑制组标题
【发布时间】:2014-03-31 14:31:03
【问题描述】:

我有一份报告,目前以以下格式显示数据:

GROUP HEADER
January      Meter Number      Name       Class      Facility ...
...
December     MeterNumber       Name       Class      Facility ...

GROUP HEADER
January      Meter Number      Name       Class      Facility ...
...
December     MeterNumber       Name       Class      Facility ...

我在详细信息行上有一个条件抑制公式,如果其中一个字段值高于特定值,它将抑制记录。如果我抑制 Group Header 行,一切都会很好,但我只会得到一长串记录 那些不应该被压制的东西。我想让组标题可见,以便报告更易于阅读。问题是当我将条件抑制公式添加到组标题行时,它只查看组中的第一条记录。如果该记录被禁止,那么组标题也是如此,但可能有 3 个月的记录不应该被禁止,所以我仍然希望显示组标题。相反,我得到的是以下内容:

March      10003      Name       Class      Facility ... //Notice no Group Header
April      10003      Name       Class      Facility ...
December   10003      Name       Class      Facility ...

Group Header
January    10004      Name       Class      Facility ...
March      10004      Name       Class      Facility ...
February   10005      Name       Class      Facility ...   //Notice no Group Header
March      10005      Name       Class      Facility ...

由于 10003 和 10005 号计量表的 1 月份被抑制,因此组标题也被抑制。我尝试将组标题放在详细信息行上,因为它在每一行上打印组标题,但随后我格式化该字段并禁止重复,它再次执行相同的操作。它仅显示未抑制一月记录的那些组标题。这没什么大不了的,但我在压制后处理了 1000 多条记录。

我已经搜索了两天的解决方案无济于事。有什么方法可以查看组中的所有记录,而不仅仅是查看第一条记录?

编辑:对于那些关于为什么我需要在该仪表中的所有详细信息已被抑制时抑制组标题的问题,这是因为如果我不这样做,那么我会得到以下信息:

10003
10004
January    10004      Name       Class      Facility ...
March      10004      Name       Class      Facility ...
10005
February   10005      Name       Class      Facility ...   
March      10005      Name       Class      Facility ...
10006
10007
10008...

换句话说,在我看到包含实际详细信息的页面之前,我会得到几页只是组标题的页面。

【问题讨论】:

  • 我不了解您想要禁止显示组标题的条件。是否仅当该仪表的所有详细信息部分都被抑制时?
  • 当您已经抑制了不需要的详细信息行时,为什么还要将条件放在组标题上。我也同意@Ryan。
  • @Ryan,是的,这是正确的,我只想在该仪表中的所有细节都被抑制时抑制组标题。
  • @aMazing 参见上面的 OP 编辑​​

标签: crystal-reports crystal-reports-2008


【解决方案1】:

为了说明起见,我将假设抑制详细信息部分的逻辑包含在公式 {@SuppressDetails?} 中。现在,创建一个新公式,当该部分被抑制时输出 1,否则输出 0:

if {@SuppressDetails?} then 1 else 0

将此新公式放在详细信息部分并禁止显示。现在,创建您的组标题抑制公式,以便将抑制的详细信息部分的数量与该组(即 {table.MeterNumber} 组)中的记录总数进行比较:

count({@SuppressDetails?},{table.MeterNumber}) = sum({SuppressDetails?},{table.MeterNumber})

【讨论】:

  • 谢谢您,先生,我已经为此奋斗了好几天了。你的回答解决了这个问题。 +1,现在我有足够的声誉!
  • 我怎样才能知道如何引用我的细节线抑制功能?如果您在上面的示例中将其命名为 {@SuppressDetails?},但我无法弄清楚 Crystal 到底在调用什么。
【解决方案2】:

我实际上找到了我现在更喜欢的自己的方式来做到这一点。它与@ryan 发布的非常相似。

我首先创建了一个公式字段,该字段在满足条件时返回 1,然后我将条件设置为与详细信息级别抑制相同的条件。我将该字段置于详细级别,然后将其隐藏。

然后,我创建了一个汇总字段,用于汇总整个组中的该字段。并将该字段放入组摘要中并抑制它。然后我向组中添加了一条禁止规则,如果该汇总字段小于 1,则也禁止该组摘要。

中提琴

【讨论】:

    猜你喜欢
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 2013-10-27
    • 1970-01-01
    相关资源
    最近更新 更多