Crystal reports Crystal reports子报表中的共享变量未显示在主报表的页眉中

Crystal reports Crystal reports子报表中的共享变量未显示在主报表的页眉中,crystal-reports,crystal-reports-xi,Crystal Reports,Crystal Reports Xi,我有一个子报告部分,显示与订单相关的详细信息(行项目)。在此子报告中,我创建了一个共享变量,用于返回权重字段的总和: WhilePrintingRecords; Shared numbervar WeightTotal := Sum ({Report.TotalWeight}) 在主报告中,我创建了另一个变量来显示子报告的总权重: WhilePrintingRecords; shared numbervar WeightTotal; WeightTotal; 这对于在报表页脚或页脚中显示总计

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

WhilePrintingRecords;
Shared numbervar WeightTotal := Sum ({Report.TotalWeight})
在主报告中,我创建了另一个变量来显示子报告的总权重:

WhilePrintingRecords;
shared numbervar WeightTotal;
WeightTotal;
这对于在报表页脚或页脚中显示总计非常有效。但是,我需要在页眉中显示此金额

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

我还尝试按照以下建议,按照此线程在主报告中创建一个全局变量:


执行这样的任务可能吗?基础数据由sp生成(两个数据在几个不同的报告中共享)。我可以分解出一个新的sp来简单地求和这个总数,但我更愿意将其委托给crystal。

问题是,虽然在第二个公式中使用WhilePrintingRecords会迫使crystal在最终评估过程中比正常情况下更晚地对其进行评估,但也会在评估子报告时进行评估。这意味着主报表中的任何公式都是相对于子报表进行处理的。在您的情况下,标头中的公式在详细信息部分的子报表之前进行计算,即使使用WhilePrintingRecords关键字也是如此。此图对于理解不同的过程非常有用:

您可以尝试使用SQL表达式对每个细节部分进行简单的聚合求和。由于对数据源或模式一无所知,很难给出一个示例,但这里是总体思路。您可以对数据源使用任何有效的SQL,只要它返回标量

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

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

我最终完成了这项工作,将子报表的第二个副本添加到主报表的页眉中,并提取共享的总数。Gross,但在找到更好的方法来传递此信息之前,它暂时有效。在相同的场景中,我在页脚中显示共享变量时遇到问题,但有一个多页报告