我正在尝试使用发票数据在Crystal Report中创建条件摘要,其中如果商品代码在发票上出现多次,则仅包括总数中的金额和最大金额。我也希望这反映在项目数量上,例如,如果有4个项目,但两个是相同的项目代码,那么发票项目的nbr应为3.以下是数据样本:
TDate Invoice ID Fee line Item Code Nbr Items Amount
05/01/2017 12024200 11425100||11 11610 1 54.20
05/01/2017 12024200 11425100||12 55238 1 156.25
05/01/2017 12024200 11425100||13 55238 1 96.60
05/01/2017 12024200 11425100||15 55276 1 80.55
因此Invoice 12024200的总计应如下所示(忽略第二次出现的物料代码55238的值)。
05/01/2017 12024200 11425100||11 11610 1 54.20
05/01/2017 12024200 11425100||12 55238 1 156.25
05/01/2017 12024200 11425100||13 55238 1 96.60
05/01/2017 12024200 11425100||15 55276 1 80.55
Total 3 291.00
答案 0 :(得分:0)
当您添加摘要以计算此字段时,请不要计算项目数,请计算ItemCode
。
但是有一种名为DistinctCount
的摘要使用它而不是使用普通Count
。然后它将删除冗余计数。
答案 1 :(得分:0)
解决问题中的2个问题:
1)
使用" Distinct Count"创建摘要超过"项目代码"并将位置设置为发票组或报表页脚。
2)
在"发票ID"上创建一个组(G1)。 (您可以在此处放置发票总额)。
创建内部组(G2)并通过将摘要位置设置为G2来放置最大值(金额)。 它应该打印每个项目的最大成本(仅用于测试目的)。
创建公式并将其放在G2页脚上。
WhilePrintingRecords;
Global NumberVar Total;
Total := Total + Maximum ({table.Amount}, {table.ItemCode});
Total;
当此公式可见时,您应该看到类似于运行总计的内容。 取消所有不必要的字段。
要在另一个组页脚中打印值(如发票组页脚),只需创建另一个公式:
WhilePrintingRecords;
Global NumberVar Total;
Total;
要重置发票之间的值(如果您的报表支持多张发票),请创建另一个公式并放入发票组标题
WhilePrintingRecords;
Global NumberVar Total;
Total := 0;
Total;