通过省略抑制记录在报表页脚中创建摘要

时间:2012-05-03 14:56:45

标签: crystal-reports crystal-reports-2008

我在报告中有一个组标题部分,显示名为Personal,

的公式字段的摘要总计
if not IsNull({AirBilling.BillingCode}) and {AirBilling.BillingCode} = 'P' then
    {AirBilling.Gross}
else
    0

现在,在报告页脚的报告末尾,我显示了在组标题部分中计算的所有个人总计的摘要总计。现在我有一个子报表过滤某些记录,并根据子报表返回的计数,我在主报表中禁止记录。我的问题是,我的主要报告还在页脚总数中考虑了被抑制记录的计数。当我尝试在上面的公式字段逻辑中设置条件时,如果RowCount> 0然后..(如果不是IsNull ....),但是当我尝试运行报告时它给出了一个错误,表示'已经在非经常性字段中指定了摘要'。有没有办法可以省略要在页脚部分计算的抑制记录。 RowCount是子报表返回的共享变量值,我用它来过滤主报表中的记录。

2 个答案:

答案 0 :(得分:0)

据我了解,您正在尝试运行子报表以确定是否应排除主报表中的某些行(从显示和总计中排除)。您可以使用两种方法来解决此问题:

  • 在主报表的查询/存储过程中复制子报表中的逻辑,以便在相关记录到达Crystal之前将其排除。不需要子报告。
  • 交换子报表和主报表(假设除了用户输入的参数之外,当前子报表中不需要当前主报表的数据)并传递现在的相关数据主要报告已成为子报告的内容,作为参数。

我推荐使用前一种方法,因为Crystal作为一种格式化数据的工具比操作它更好 - SQL通常是一种更好的数据操作工具。

答案 1 :(得分:0)

是否可以使另一个隐藏的字段运行公式以确定该行是否被抑制。基于它,它显示0或1.然后你可以为该行数计算该字段。

或者,您可以从存储过程构建该子报表,该存储过程生成已经为您完成了工作的列。然后你可以使用它返回的数据列来解决这个问题。