【发布时间】:2012-05-05 01:51:32
【问题描述】:
我在报告中有一个组标题部分,它显示来自名为 Personal 的公式字段的汇总,
if not IsNull({AirBilling.BillingCode}) and {AirBilling.BillingCode} = 'P' then
{AirBilling.Gross}
else
0
现在,在报告页脚的报告末尾,我显示了在组标题部分中计算的所有个人总计的汇总总计。现在我有一个过滤某些记录的子报表,根据子报表返回的计数,我在主报表中隐藏记录。我的问题是,我的主要报告也在页脚总数中考虑了被抑制记录的计数。当我尝试在上面的公式字段逻辑中放置一个条件时,如果 RowCount>0 则..(如果不是 IsNull..),但是当我尝试运行报告时,它给了我一个错误,上面写着“摘要有在非经常性字段上指定'。有没有办法可以省略要在页脚部分计算的抑制记录。 RowCount 是子报表返回的共享变量值,我用它来过滤主报表中的记录。
【问题讨论】:
-
这听起来很可怕——你能不能退后一步解释一下子报表在做什么,我们可以建议你如何在没有它的情况下实现相同的结果?对这类任务使用共享变量确实会使最琐碎的任务变得复杂
-
实际上,子报表正在比较数据库中的屏蔽数据和允许用户在报表中输入的参数。没有不使用子报表的解决方法,因为这是为取消屏蔽数据创建存储过程的方式。因此,如果除了不使用子报表之外还有其他方法可以解决此问题,那就太好了。
-
not IsNull({AirBilling.BillingCode})条件在上面的表达式中是多余的——如果{AirBilling.BillingCode}是'P',那么根据定义它不为空。 -
在 Crystal Reports 中,他可能编写了“not IsNull”first,因为典型的 C# 例程在尝试评估 {AirBilling 时会抛出“Object not set...” .BillingCode} 为空。即使水晶在评估空值时没有失败,我也能理解他为什么这样做。
标签: crystal-reports crystal-reports-2008