【问题标题】:JasperReports: using variable in variable's expressionJasperReports:在变量表达式中使用变量
【发布时间】: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 的了解非常有限。

标签: variables jasper-reports


【解决方案1】:

因为这是搜索 Jasper 报告并在其他变量中使用变量时的第一个 SO 命中,这并没有提供任何帮助 - 也许这里的这个答案可以帮助其他寻找如何使用变量的答案的人在 iReport 的另一个变量中:

取自这里:http://www.jasperassistant.com/docs/guide/ch06s08.html,简短的回答是:

是的,您可以在 iReport 中的另一个变量中使用一个变量 - 但您要在另一个变量中使用的变量必须首先声明 - 因此变量的顺序很重要。

希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2011-05-24
    • 1970-01-01
    • 2012-10-22
    相关资源
    最近更新 更多