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 运行 总计字段的工作方式与汇总字段非常相似,但在汇总数据时允许更多地控制评估哪些记录。要根据您的需要设置 运行 总计字段,请尝试以下步骤。
- 创建一个新的 运行 总计字段。
- 设置“要汇总的字段”以使用数据库中的“已完成总数”列。将“汇总类型”设置为 SUM。
- 将“评估”部分中的单选按钮设置为“使用公式”,然后单击 X-2 按钮创建公式,以确定某行数据是否应包含在总和中。无论您在此处输入什么公式,都需要 return 一个布尔值。当此值为 TRUE 时,该行的数据将被包括在内,而当它为 FALSE 时,该行的数据将被排除。我会在这里使用以下公式:
TONUMBER({Invoices.InvoiceItems~ItemNumber}) <> 9999 AND TONUMBER({Invoices.InvoiceItems~ItemNumber}) <> 0000
- 最后要做的是为 运行 总字段设置重置条件。如果您以某种方式(例如按客户)对数据进行分组,并且允许您对单个客户的数据求和,然后为下一个客户重置为零,则可以使用此方法。如果您不使用任何分组,您可以将此设置保留为“从不”。
- 单击“确定”完成。 :)
此时您需要做的就是将刚刚创建的 运行 总字段放入报告中。不过,请注意将此字段放在哪些部分中。如果将它放在 header 部分,您可能会发现它没有添加到数据集中的最后一条记录中,因为报告尚未将其打印到详细信息部分。我建议在页脚部分放置 运行 总字段数以避免这种细微差别。
希望对您有所帮助!如果您确实有一些分组级别需要帮助来设置重置条件,请告诉我您的报告的分组级别是什么,我可以为您更新此答案。
我有一个包含发票数据行的 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 运行 总计字段的工作方式与汇总字段非常相似,但在汇总数据时允许更多地控制评估哪些记录。要根据您的需要设置 运行 总计字段,请尝试以下步骤。
- 创建一个新的 运行 总计字段。
- 设置“要汇总的字段”以使用数据库中的“已完成总数”列。将“汇总类型”设置为 SUM。
- 将“评估”部分中的单选按钮设置为“使用公式”,然后单击 X-2 按钮创建公式,以确定某行数据是否应包含在总和中。无论您在此处输入什么公式,都需要 return 一个布尔值。当此值为 TRUE 时,该行的数据将被包括在内,而当它为 FALSE 时,该行的数据将被排除。我会在这里使用以下公式:
TONUMBER({Invoices.InvoiceItems~ItemNumber}) <> 9999 AND TONUMBER({Invoices.InvoiceItems~ItemNumber}) <> 0000
- 最后要做的是为 运行 总字段设置重置条件。如果您以某种方式(例如按客户)对数据进行分组,并且允许您对单个客户的数据求和,然后为下一个客户重置为零,则可以使用此方法。如果您不使用任何分组,您可以将此设置保留为“从不”。
- 单击“确定”完成。 :)
此时您需要做的就是将刚刚创建的 运行 总字段放入报告中。不过,请注意将此字段放在哪些部分中。如果将它放在 header 部分,您可能会发现它没有添加到数据集中的最后一条记录中,因为报告尚未将其打印到详细信息部分。我建议在页脚部分放置 运行 总字段数以避免这种细微差别。
希望对您有所帮助!如果您确实有一些分组级别需要帮助来设置重置条件,请告诉我您的报告的分组级别是什么,我可以为您更新此答案。