如何将2个变量求和并将其存储到一个变量中

sec*_*ova 1 jasper-reports

我有一个包含 2 个不同子报告的主报告。

我有一个来自 subreport1 的变量 sum,例如 10(整数类型)

我有来自另一个 subreport2 的另一个变量 sum,例如 2(整数类型)

我已经成功地从每个子报告中检索了 2 个变量, 现在我想在主报告中创建一个变量来总结这 2 个变量

所以现在在我的主报告中我有 3 个变量

第一个变量称为 VAR1,它来自子报表 1

Name                       VAR1
Variable Class             java.lang.Integer
Reset type                 Report
initial Value Expression   0
Run Code Online (Sandbox Code Playgroud)

第二个变量称为 VAR2,它来自子报表 2

Name                       VAR2
Variable Class             java.lang.Integer
Reset type                 Report
initial Value Expression   0
Run Code Online (Sandbox Code Playgroud)

最后一个变量称为 SUM

Name                       SUM
Variable Class             java.lang.Integer
Reset type                 Report
variable expression        new Integer($V{VAR1}.intValue() + $V{VAR2}.intValue() )
initial Value Expression   0
Run Code Online (Sandbox Code Playgroud)

当我预览 pdf 时,SUM 变量为 NULL,VAR1 和 VAR2 是整数值,但 SUM 变量始终为 NULL

难道 SUM 是在 VAR1 和 VAR2 之前计算的吗?

我的问题是什么?

dad*_*a67 5

您的怀疑是正确的,使用具有从子报表返回的值的变量来计算其他变量是行不通的,因为“常规”变量值是在子报表呈现和返回值之前计算的。

如果您只需要对返回值求和,您可以做的一件事是将两个子报表的值返回到同一个变量中,使用计算=“Sum”作为返回值。也就是说,将第一个子报表中的 val1 返回到 VAR1,并将相同的 val1 返回到 SUM(计算 =“Sum”),并将 val2 从第二个子报表返回到 VAR1 和 SUM(计算 =“Sum”)。

请注意,calculation="Sum" 是针对返回值而不是变量;用于返回值的变量通常需要有calculation="System"。