【问题标题】:Synchronize Print When Expression & Text Field Expression表达式和文本字段表达式时同步打印
【发布时间】:2010-03-30 16:56:16
【问题描述】:

背景

下图中的 Totals 部分显示了 Trend 列的奇怪结果。当名为 Previous 列下的值等于名为 Current 列下的值时,文本应为 true

在表达式和文本字段表达式时打印

使用相同的代码计算表达式:

new java.lang.Boolean(
    $V{LAST_WEEK_TALLY_0}.add(
    $V{LAST_WEEK_TALLY_1} ).add(
    $V{LAST_WEEK_TALLY_2} ).add(
    $V{LAST_WEEK_TALLY_3} ).longValue() ==
    $V{THIS_WEEK_TALLY_0}.add(
    $V{THIS_WEEK_TALLY_1} ).add(
    $V{THIS_WEEK_TALLY_2} ).add(
    $V{THIS_WEEK_TALLY_3} ).longValue()
)

文本字段的评估时间设置为Band

问题

看起来好像 Print When Expression 代码正在为 PreviousCurrent 列下的值评估一排为时已晚。正在打印的值对于该行是正确的。这意味着 Print When ExpressionText Field Expression 的计算时间不会同时计算。

问题

我需要做什么才能使 Print When ExpressionText Field Expression 同时计算出相同的结果?这将在 Previous == Current 时为 Totals' Trend 列生成单词 true

【问题讨论】:

    标签: jasper-reports ireport


    【解决方案1】:

    我有两个建议,不确定是否可行:

    1.使用 iReport 中的求和
    假设您使用的是交叉表,则有一个功能可以对行或列上的总数求和。使上一个总计等于上一个总计的数量,当前总计也是如此。
    然后在趋势栏中,写一个类似Current_Value - Previous_value ==0的表达式

    2。在 Query 中求和
    这是更强大的解决方案,但可能更复杂一些。我通常不太依赖 iReport,总是为其提供现成的数据。
    如果您使用 Java 生成报表数据,则在调用报表之前可以轻松填写​​所有值。

    【讨论】:

    • 在查询中查找总和会很困难。由于数据的性质,我不能轻易使用交叉表报告。感谢您的回复!
    【解决方案2】:

    一个不优雅但实用的解决方案是将静态文本字段合并在一起,避免必须同步 Print When ExpressionText Field Expression 只支持后者.

    ($V{LAST_WEEK_TALLY_0}.add(
      $V{LAST_WEEK_TALLY_1} ).add(
      $V{LAST_WEEK_TALLY_2} ).add(
      $V{LAST_WEEK_TALLY_3} ).longValue() ==
    $V{THIS_WEEK_TALLY_0}.add(
      $V{THIS_WEEK_TALLY_1} ).add(
      $V{THIS_WEEK_TALLY_2} ).add(
      $V{THIS_WEEK_TALLY_3} ).longValue()) ? "-" :
    ($V{LAST_WEEK_TALLY_0}.add(
      $V{LAST_WEEK_TALLY_1} ).add(
      $V{LAST_WEEK_TALLY_2} ).add(
      $V{LAST_WEEK_TALLY_3} ).longValue() <
    $V{THIS_WEEK_TALLY_0}.add(
      $V{THIS_WEEK_TALLY_1} ).add(
      $V{THIS_WEEK_TALLY_2} ).add(
      $V{THIS_WEEK_TALLY_3} ).longValue()) ? "Up" : "Down"
    

    【讨论】:

      猜你喜欢
      • 2015-03-14
      • 2020-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-03
      • 2014-01-04
      • 1970-01-01
      相关资源
      最近更新 更多