在Crystal Reports中使用组公式中的共享变量的方法?

时间:2011-08-04 19:54:50

标签: crystal-reports crystal-reports-8.5

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

//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(我知道)所以我希望答案不是升级......

1 个答案:

答案 0 :(得分:1)

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

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