【问题标题】:Crystal Report - two detail sections each showing their own subset of dataCrystal Report - 两个详细信息部分,每个部分显示自己的数据子集
【发布时间】:2017-02-24 20:54:39
【问题描述】:

是否可以有一个包含两个详细信息部分的 Crystal 报表,每个部分显示从报表链接到的 SP 返回的结果的子集?

例如,在 DetailA 我想要 FieldA 在 (a,b,c) 中的记录,在 DetailB 我想要 FieldA 在 (d,e,f) 中的记录

我知道可以使用 Select Expert,但它似乎适用于整个报告而不是每个单独的详细信息部分

如果我不需要创建公式就好了,因为详细信息部分有大约 20 个字段。是否有某种主公式可以应用于整个细节部分?

【问题讨论】:

    标签: crystal-reports


    【解决方案1】:

    您可以非常简单地做到这一点,只需按照您想要的方式设置您的两个详细信息部分,并在每个部分中放置您想要显示的所有记录字段。然后,将抑制公式添加到每个详细信息部分。您可以通过右键单击该部分,选择“Section Expert”,然后单击“Suppress (No Drill-Down)”旁边的公式按钮来访问每个部分的抑制公式

    详情A区:not({table.fieldA} in ['a','b','c'])

    详细B区:not({table.fieldA} in ['d','e','f'])

    现在,您的详细信息 A 部分将仅在记录类型为 a、b 或 c 时显示,而您的详细信息 B 部分将仅在记录类型为 d、e 或 f 时显示。

    【讨论】:

      【解决方案2】:

      虽然 Ryan 的方法可行,但最好将其添加并按公式字段分组:

      if {table.fieldA} In ['a','b','c'] then
          'Group 1'
      else
          'Group 2'#
      

      然后将细节A和B的抑制公式添加为:

      {@MyGroup} = 'Group 2'{@MyGroup} = 'Group 1'

      这提供了三个好处:

      • 它会自动将这两个部分分类为第 1 组和第 2 组
      • 它只会显示一个或另一个,并且总是显示一个,Ryan 的方法可能会隐藏可能导致问题的意外细节
      • 它更易于维护,因为您无需在不同部分保留不同的列表

      【讨论】:

      • +1 用于替代方法。最终,它取决于报表的数据模型和所需行为。如果这两种类型的记录需要不同的字段或不同的公式,那么您仍然需要两组详细信息部分。此外,任何不符合 a、b、c 标准的记录都将归入第 2 组,可能导致不良行为或记录意外显示。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      相关资源
      最近更新 更多