【发布时间】:2018-10-24 02:19:54
【问题描述】:
我正在使用 Jaspersoft Studio 并试图将一个变量设置为另一个变量的值(实际上,我需要将另一个变量中的两个变量相加)
所以我有两个变量,A 和 B。我需要将 A 放入 B。每当我使用文本字段输出 A 时,它都可以正常工作。如果在变量 B 中,我放了一个 ($V{A}),然后我尝试打印 B,我得到一个空值。
有人知道为什么会这样吗?
报表 X 包含返回变量的子报表 Y
<returnValue subreportVariable="EXPENDITURES_TOTAL_VAR" toVariable="EXPENDITURES_TOTAL_VAR" incrementerFactoryClass=""/>
(注意两个报告中的变量名称相同)
报告 X 然后包含另一个变量
<variable name="STOTAL_VAR" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$V{EXPENDITURES_TOTAL_VAR}]]></variableExpression>
</variable>
这个作品:
<textField>
<reportElement x="120" y="1" width="70" height="30" uuid="f0e81b0f-ddd3-4f31-9711-cfdeb64f36b2"/>
<textFieldExpression><![CDATA[$V{EXPENDITURES_TOTAL_VAR}]]></textFieldExpression>
</textField>
这不是:
<textField>
<reportElement x="310" y="1" width="100" height="30" uuid="263973e7-33b1-4343-a76c-3edbe5506d66"/>
<textFieldExpression><![CDATA[$V{STOTAL_VAR}]]></textFieldExpression>
</textField>
【问题讨论】:
-
请提供一个简单的 JRXML 来重现您的问题。
-
您只提供了 JRXML 的片段,所以我不得不猜测。我假设您的
variable name="STOTAL_VAR"声明在执行子报告之前已处理。因此,STOTAL_VAR被初始化为EXPENDITURES_TOTAL_VAR的某个空值。当子报表被执行时,EXPENDITURES_TOTAL_VAR得到一个新值,但是对于STOTAL_VAR来说已经太迟了。 -
是的,是的,这也是我的想法。有没有办法强制在评估另一个 var 之后对其进行评估?
-
据我所知没有。但我对 JasperReports 的了解非常有限。