Crystal reports 总和仍然包括被抑制的值

Crystal reports 总和仍然包括被抑制的值,crystal-reports,report,sum,Crystal Reports,Report,Sum,我有一个报告,其中包含一些有限的重复信息,可能有多个日期,但我希望美元值仅显示在第一项上 即: 第1项-2010年8月3日-费用为1000美元 项目1-2010年8月4日(成本抑制) 项目2-2010年8月3日-100美元 项目3-2010年8月4日-200美元 合计后,它应该显示为$1300,但相反,它显示为$2300 我通过使用公式抑制了成本部分: ( if (Previous({MyReportData;1.MyItemId}) = {MyReportData;1.MyItemId}) t

我有一个报告,其中包含一些有限的重复信息,可能有多个日期,但我希望美元值仅显示在第一项上

即:

第1项-2010年8月3日-费用为1000美元
项目1-2010年8月4日(成本抑制)
项目2-2010年8月3日-100美元
项目3-2010年8月4日-200美元

合计后,它应该显示为$1300,但相反,它显示为$2300

我通过使用公式抑制了成本部分:

(
if (Previous({MyReportData;1.MyItemId}) = {MyReportData;1.MyItemId}) then
    true
else
    false
)
这个配方很好用

我曾尝试创建一个公式来执行自定义求和,该公式将排除重复项,但它一直说“此字段无法汇总”

有什么想法吗?

你有两个选择

  • 修改SQL以只引入所需的数据。显然,您不需要2010年8月4日的行。因此,不要将其引入报表。这样,您的摘要将按预期工作

  • 创建一个运行总计,并使用与抑制公式相反的公式计算行的变化


  • 另一种选择是只使用全局变量,使用用于抑制的反向条件跟踪求和。从性能角度看,这应该比使用Crystal的运行总计或摘要字段更好


    尽管如此,我还是认为使用SQL表达式通过ItemID简单地选择日期最早的行会更快,并且可以避免Crystal必须快速浏览数据。

    re#1,实际上我需要显示其他数据(它比日期更复杂).我使用了选项2,效果很好,只是添加了跑步总数,在场地变化时加上“评估”“然后显示在“组”部分。非常感谢。我现在会更深入地研究水晶的这一领域Nathan Koop。。。在Crystal报表中,运行总计计算不是非常有效。如果可能,请在SQL查询中处理计算。最简单的解释是“报表的威力和速度不是Crystal report,而是用于生成数据集的SQL查询”。Crystal Reports可以做很多很酷的事情,但是如果您能够在服务器(SQL server、Oracle)上处理更多的事情,那么报告的运行速度就会更快。通常,我采取的方法是将数据集展平到只需要的数据,然后让报表处理格式。我很少使用水晶公式