1

我有一个子报告部分,显示与订单相关的详细信息(行项目)。在这个子报告中,我创建了一个共享变量来返回权重字段的总和:

WhilePrintingRecords;
Shared numbervar WeightTotal := Sum ({Report.TotalWeight})

在我的主报告中,我创建了另一个变量来显示子报告的总重量:

WhilePrintingRecords;
shared numbervar WeightTotal;
WeightTotal;

这适用于在报表页脚或页脚中显示总计。但是,我需要在页眉中显示此金额。

我尝试使用该EvaluateAfter()函数创建另一个报告变量,以尝试将此数据带入标题部分。那没有用。

我还尝试按照此线程在主报告中创建全局变量的建议进行操作:Crystal Reports: global variable running total not displayed in header

执行这样的任务是否可能?基础数据由 sp 生成(在几个不同的报告中共享)。我可以打破一个新的 sp 来简单地总结这个总数,但我更愿意将它委托给水晶。

4

1 回答 1

3

问题是,虽然在您的第二个公式中使用 WhilePrintingRecords 会迫使 Crystal 在最终评估过程中比正常情况下评估它,但这也是评估子报表的时候。这意味着主报表中的任何公式都对于子报表进行处理。在您的情况下,即使使用 WhilePrintingRecords 关键字,也会在详细信息部分的子报表之前评估标题中的公式。这张图非常适合理解不同的传递:Multi-Pass Reporting Process

您可以尝试使用 SQL 表达式对每个详细信息部分进行简单的汇总汇总。对您的数据源或架构一无所知,很难举个例子,但这是一般的想法。只要返回标量,您就可以对数据源使用任何有效的 SQL。

select sum(weight)
from table
where table.orderID="table"."orderID"

另一种方法是为每个订单使用额外的内部分组级别,完全摆脱子报表,并使用 Crystal 的 sum() 函数或全局变量来获取每个内部组的权重。

于 2011-10-21T03:06:12.067 回答