因此,我的任务是更新客户创建的自定义报告,使其更通用,供所有其他客户使用。该报告显示了基于付款方式的总销售额,它将所有不同的信用卡(作为单独的付款方式存储在我们的软件内部)组合到一个“信用卡”组中。不幸的是,这些值在报告中是硬编码的。我在子报表中创建了以下公式,以生成从数据库中提取的有效信用卡名称数组,以便任何客户都可以使用它:
//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(我知道)所以我希望答案不是升级......
答案 0 :(得分:1)
是否可以在主报告中对CreditCard.crCard进行左外连接?然后,您可以创建一个公式,检查CreditCard表中的行中是否存在非空值。 if not null {CreditCard.crCard} then "Credit Card" else {Sales_ByPayMethod;1.finPayMethod}
如果您的数据模型或使用存储过程变得混乱,则相同的逻辑可能会在SQL表达式中起作用。