Jasper reports 在表达式和;文本字段表达式

Jasper reports 在表达式和;文本字段表达式,jasper-reports,ireport,Jasper Reports,Ireport,背景 下图中的总计部分显示了趋势列的奇怪结果。当名为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} ).long

背景

下图中的总计部分显示了趋势列的奇怪结果。当名为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()
)
文本字段的评估时间设置为“带”

问题

当表达式代码为上一列和当前列下的值求值时,似乎打印太晚了一行。正在打印的值对于该行是正确的。这意味着表达式和文本字段表达式不同时求值时打印的求值时间

问题


当表达式和文本字段表达式同时计算为相同的结果时,我需要做什么才能进行打印?当
Previous==Current

我有两个建议,不确定其中一个是否有效时,这将为Totals'趋势列生成单词true

1。使用来自iReport的总和
假设您使用的是交叉表,则有一个功能可以对行或列的总计进行求和。使上一次总计等于上一次总计的数量,当前总计也是如此。
然后在趋势列中,编写一个表达式,如
Current\u Value-Previous\u Value==0

2。在查询中查找总和
这是一个更健壮的解决方案,但可能要复杂一些。我通常不太依赖iReport,总是提供现成的数据。

如果您使用Java生成报表数据,则在调用报表之前很容易填写所有值。

一个不雅观但功能强大的解决方案是将静态文本字段合并在一起,避免在表达式和文本字段表达式时同步打印,而只支持后者

($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"
($V{LAST_WEEK_TALLY_0}。添加(
$V{上周{1})。添加(
$V{LAST_WEEK_TALLY_2})(
$V{LAST_WEEK_TALLY_3}).longValue()==
$V{本周{0}。添加(
$V{本周{1})。添加(
$V{本周{2})。添加(
$V{THIS_WEEK_TALLY_3}).longValue())?"-" :
($V{LAST_WEEK_TALLY_0}。添加(
$V{上周{1})。添加(
$V{LAST_WEEK_TALLY_2})(
$V{LAST_WEEK_TALLY_3}).longValue()<
$V{本周{0}。添加(
$V{本周{1})。添加(
$V{本周{2})。添加(
$V{THIS_WEEK_TALLY_3}).longValue())?“向上”:“向下”

在查询中查找总和将很困难。由于数据的性质,我无法轻松使用交叉表报告。谢谢你的回复!