1

因此,我的任务是更新客户创建的自定义报告,使其更通用,以供所有其他客户使用。该报告显示基于付款方式的总销售额,并将所有不同的信用卡(作为单独的付款方式存储在我们的软件内部)合并到一个“信用卡”组中。不幸的是,这些值在报告中是硬编码的。我在子报表中创建了以下公式,以生成从数据库中提取的有效信用卡名称数组,以便任何客户都可以使用它:

//Init
Shared StringVar Array CreditCards;
ReDim CreditCards[1];

//Calc (in the details section)
Shared StringVar Array CreditCards;
CreditCards[ubound(CreditCards)] := {CreditCard.crCard};
ReDim Preserve CreditCards[ubound(CreditCards)+1];

//Display (suppressed, used to check if I got all the cards)
Shared StringVar Array CreditCards;
Join(CreditCards, chr(10));

然后,我想我会在我的组公式中这样做,其中 Sales_ByPayMethod 是一个存储过程......

Shared StringVar Array CreditCards;
If {Sales_ByPayMethod;1.finPayMethod} In CreditCards Then 'Credit Card'

...只是发现这不起作用,因为您显然不能在分组公式中使用共享变量。有解决方法吗?或者(最好)正确的方法?我被迫使用 Crystal 8.5(我知道)所以我希望答案不是升级......

4

1 回答 1

1

是否可以在主报告中对 CreditCard.crCard 进行左外部连接?然后,您可以创建一个公式来检查 CreditCard 表中的行中是否有非空值。if not null {CreditCard.crCard} then "Credit Card" else {Sales_ByPayMethod;1.finPayMethod}

如果这与您的数据模型或使用存储过程变得混乱,那么相同的逻辑可能会在 SQL 表达式中起作用。

于 2011-08-05T22:59:50.023 回答