使用匹配的字段指示多个记录

时间:2018-03-08 15:57:45

标签: crystal-reports

如何指定具有相同发票编号但具有不同销售人员ID的多个记录?我们的佣金可以分成多个销售人员,因此每张发票可以有两个不同的销售人员。

例如:

Grouped by: Sales Person ID (No Changing this option)

These records are in the Group Footer.

Sales Person ID:  Invoice: Invoice Amt: Commissions:    (Indicator)
4433               R100      20,000        3,025            * More than one record on the same invoice with a different sales person
4450               R096       1,987          320
4599               R100      20,000        3,025            * More than one record on the same invoice with a different sales person
4615               R148         560           75
4777               R122       2,574          356

2 个答案:

答案 0 :(得分:0)

如果您的报告少于1000张发票,您可以尝试这样的事情。

当发票的第二次出现时,这将返回true。然后你可以做一些像设置行背景做红色的东西。

    Global NumberVar Array invoices;
    numbervar nextIndex := count(invoices) + 1;
    if nextIndex <= 1000 and not ({Result.InvoiceNumber} in invoices) then (
        redim invoices [nextIndex];
        invoices[nextIndex] := {Result.InvoiceNumber};
        true;
    )
    else false;

如果要检测第一次出现,则需要更复杂的东西。

答案 1 :(得分:0)

我认为SQL表达式字段是实现所需结果的好方法。您已经在每行数据中都有一个InvoiceNo。您只需要一个SQL表达式字段,该字段使用该INvoiceNo来执行查询以计算获得佣金的销售人员的数量。

有些事情:

(
Select Count(Sales_Person_Id)
From [Table]
Where [Table].InvoiceNo = InvoiceNo
)

这将返回一个整数值,表示与一张发票关联的销售人员数量。您可以在指标列中删除SQL表达式字段,也可以写一些其他公式来执行特殊操作。