子报表中的水晶报表共享变量没有显示在主报表的页眉中



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

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()函数或全局变量来获得每个内部分组的权重。

最新更新