gpt4 book ai didi

return-value - iReport子报表返回值

转载 作者:行者123 更新时间:2023-12-01 15:35:26 25 4
gpt4 key购买 nike

我正在使用 iReport 4.0.2,我想在我的主报告中显示一个结果。例如,在我的主报告中我们有两列,我想得到这两列的总和,就像这样的格式:

A      B     sum
10 5 15

其中 A 是主报表中的一个字段,B 是我的子报表的返回值。这很好用。但是,关键是有时子报表不会返回任何值,这就是问题所在。在这种情况下,求和的结果是这样的:

A       B      sum
10 NULL

正如我们在这里看到的,B 是子报表的返回值,但它的值既不是 NULL 也不是 0 。这就是我们遇到这个问题的原因。

我试图找出当 SQL 没有返回结果时如何从子报表中获取返回值。我知道 iReport 有一个名为“无数据时”的属性,但它没有帮助。所以我想知道,我们是否有其他方法可以解决 iReport 中的问题,或者使用一些 SQL 技巧。

最佳答案

我认为在您的第二个示例中 B 实际上是空的,但也许您的文本字段设置了“空时为空”属性。除了 B 的空白部分,我能够重现您的结果。

真正的问题是您不能用空值进行加法或减法。 JasperReports 只会打印 null。如果表达式中的变量之一为空,则必须添加一些逻辑以提供默认值。例如

$F{MAIN_REPORT_FIELD} - ($V{SUB_RESULT} == null ? 0 : $V{SUB_RESULT})

不幸的是,对于在 JasperReports 4.0.2 ( Case 0005138 ) 中将 Groovy 用于表达式的报告,这已被破坏,并且将始终返回 null。

您有几个选择:

  1. 您可以升级到 JasperReports/iReport 4.1.1 来解决这个问题。
  2. 您可以改用 Java 来处理表达式。

    根据您的报告,这要么是无痛的,要么是一件苦差事。任何没有正确表达式类的字段都必须修复,并且您可能必须在对非原始/包装类型执行操作的任何表达式中更加明确。

关于return-value - iReport子报表返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7466233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com