Crystal 报告 SUM 公式帮助。不要对具有特定 ID 的值求和

Crystal Reports SUM formula help. Don't SUM values with specific IDs

我有一个包含发票数据行的 table,我想对项目 ID 不等于 0000 或 9999 的所有行项目的值求和。

我要排除的项目 ID 0000 和 9999 永远不会改变。

ITEM ID NAME WORK VALUE TOTAL COMPLETED
0000 HOLD 1 0.00 1,234
1234 MATERIAL A 333.00 76.00
1235 MATERIAL B 567.00 7043.00
1236 MATERIAL C 981.00 321.00
1237 MATERIAL 4 430.00 5445.00
1238 MATERIAL 5 10.00 897.00
1239 MATERIAL 6 18.00 654.00
1240 MATERIAL 7 882.00 3.00
1241 MATERIAL 8 777.00 65.00
9999 ZY HOLD 0.00 111.00

所以上例报告中返回的值应该 = 18,502.00 而不是 20,847.00

我试过:

IF NOT((TONUMBER({Invoices.InvoiceItems~ItemNumber}) = 9999))

THEN (SUM({Invoices.InvoiceItems~InvoiceValue})+SUM({Invoices.InvoiceItems~TotalCompleted}

但这不起作用,它仍然对 9999 订单项的值求和

您可以创建一个类似于您的新公式:

IF TONUMBER({Invoices.InvoiceItems~ItemNumber}) <> 9999
AND TONUMBER({Invoices.InvoiceItems~ItemNumber}) <> 0
THEN {Invoices.InvoiceItems~TOTALCOMPLETED}
ELSE 0

然后将这个公式字段加起来。

我会创建一个 运行 总字段来完成此操作。

A 运行 总计字段的工作方式与汇总字段非常相似,但在汇总数据时允许更多地控制评估哪些记录。要根据您的需要设置 运行 总计字段,请尝试以下步骤。

  1. 创建一个新的 运行 总计字段。
  2. 设置“要汇总的字段”以使用数据库中的“已完成总数”列。将“汇总类型”设置为 SUM。
  3. 将“评估”部分中的单选按钮设置为“使用公式”,然后单击 X-2 按钮创建公式,以确定某行数据是否应包含在总和中。无论您在此处输入什么公式,都需要 return 一个布尔值。当此值为 TRUE 时,该行的数据将被包括在内,而当它为 FALSE 时,该行的数据将被排除。我会在这里使用以下公式:TONUMBER({Invoices.InvoiceItems~ItemNumber}) <> 9999 AND TONUMBER({Invoices.InvoiceItems~ItemNumber}) <> 0000
  4. 最后要做的是为 运行 总字段设置重置条件。如果您以某种方式(例如按客户)对数据进行分组,并且允许您对单个客户的数据求和,然后为下一个客户重置为零,则可以使用此方法。如果您不使用任何分组,您可以将此设置保留为“从不”。
  5. 单击“确定”完成。 :)

此时您需要做的就是将刚刚创建的 运行 总字段放入报告中。不过,请注意将此字段放在哪些部分中。如果将它放在 header 部分,您可能会发现它没有添加到数据集中的最后一条记录中,因为报告尚未将其打印到详细信息部分。我建议在页脚部分放置 运行 总字段数以避免这种细微差别。

希望对您有所帮助!如果您确实有一些分组级别需要帮助来设置重置条件,请告诉我您的报告的分组级别是什么,我可以为您更新此答案。