Jasper reports 如何将两个变量求和并存储到一个变量中

Jasper reports 如何将两个变量求和并存储到一个变量中,jasper-reports,Jasper Reports,我有一个包含两个不同子报表的主报表 我有一个来自子报表1的变量和,例如10(类型Integer) 我从另一个子报表2中得到了另一个变量sum,例如2(类型Integer) 我已成功地从每个子报告中检索到2个变量 现在我想在mainreport中创建一个变量,将这两个变量相加 现在在我的主报告中,我有3个变量 第一个变量称为VAR1,它来自子报表1 Name VAR1 Variable Class java.lang.Intege

我有一个包含两个不同子报表的主报表

我有一个来自子报表1的变量和,例如10(类型Integer)

我从另一个子报表2中得到了另一个变量sum,例如2(类型Integer)

我已成功地从每个子报告中检索到2个变量 现在我想在mainreport中创建一个变量,将这两个变量相加

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

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

Name                       VAR1
Variable Class             java.lang.Integer
Reset type                 Report
initial Value Expression   0
第二个变量称为VAR2,它来自子报表2

Name                       VAR2
Variable Class             java.lang.Integer
Reset type                 Report
initial Value Expression   0
最后一个变量称为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
预览pdf时,SUM变量为NULL,VAR1和VAR2为整数值,但SUM变量始终为NULL

是不是在VAR1和VAR2之前计算了总和


我有什么问题

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

如果只需要对返回的值求和,那么可以使用calculation=“sum”将两个子报表中的值返回到同一个变量中。也就是说,将第一个子报表中的val1返回给VAR1,并将相同的val1返回给calculation=“SUM”求和,将第二个子报表中的val2返回给VAR1,并返回给calculation=“SUM”求和


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

这取决于使用SUM变量的频带。此外,您是否在报告中显示了用于测试的VAR1和VAR2的值?我在主报告中有3个详细栏位,第一个详细栏位包含我的第一个子报告,第二个详细栏位包含第二个子报告,第三个详细栏位包含3个变量VAR1、VAR2和SUM,是的,我的VAR1和VAR2显示用于测试。最后,我只想在第三个细节栏中显示总和,但它是空的,我不知道为什么。您是否尝试将总和变量的
计算时间
更改为“现在”?另外,您是否尝试过使用另一个波段,如
Summary
Group Footer
?我将SUM变量的计算时间设置为“now”(在报告之前),并将其放置在Summary波段,但我怀疑计算部分出了问题。您是否尝试过表达式
$V{VAR1}+$V{VAR2}
?把它放到一个文本字段中,看看计算结果是否正确。谢谢你,它帮了我很多忙!