2011-08-04 47 views
1

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

//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' 

...才发现,这并不工作,因为你显然不能在分组公式中使用共享变量。有没有解决方法?或者(最好)正确的方法来做到这一点?我被迫使用水晶8.5(我知道),所以我希望答案不是升级...

回答

1

是否有可能在主报告中对CreditCard.crCard执行左外连接?然后,您可以创建一个公式,检查CreditCard表的行中是否存在非空值。​​

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