【问题标题】:JasperReports: default value instead of 'null'JasperReports:默认值而不是“空”
【发布时间】:2016-07-19 17:42:33
【问题描述】:

有没有办法为报表中的字段设置默认值?我在报告中有很多字符串字段,并且希望它们在为空时显示“0,00”。

【问题讨论】:

  • 如果您对答案不满意,请在您的问题中添加更多详细信息
  • 我认为您还应该将文本值更改为数值并设置模式,然后最终设置 0 而不是“0,00”,因为它不是数字的全局格式。

标签: jasper-reports


【解决方案1】:

假设字段名是“值”,在“文本字段表达式”中,写:

($F{value} != null) ? $F{value} : "0.00"

【讨论】:

  • 确保检查报表的脚本语言设置,对我来说,在 iReport Designer 4.0.2 中此语法在 Java 中有效,但在 Groovy 中无效
【解决方案2】:

如果需要,您还可以在文本字段的属性中选择“空时为空”。其他选项更灵活,但这样做非常简单快捷。

【讨论】:

  • 比以前的解决方案更加优雅和简单。
  • 是的,但只有在文本框中只有一个字段时才有效。
【解决方案3】:

medopal 的回答不错,但补充两点:

1) 你可以让语法更短:

($F{field_name}) ? $F{field_name} : "0.00"

2) 确保您的“else”数据与字段的值属于同一类,否则当它尝试将数字强制转换为字符串等时会出错。这就是我刚开始的时候,我搞混了。

【讨论】:

  • 当我删除 `!= null` 我得到Type mismatch: cannot convert from String to boolean
  • 自从我提供此答案以来,技术很可能在 7 年内发生了变化,当时我在发布前测试它是否有效。我不再是 JasperReports 的活跃用户,@JamieKitson 我希望你能找到一个对你有帮助的最新资源。
【解决方案4】:

您是否尝试在文本字段中设置模式?

如果您使用的是 iReport,可以在 Text Field Properties 部分的文本字段的属性中找到它。

尝试使用类似###0.00 的方法来表示 1234.56,即使它为空,它也会始终显示 0.00。

【讨论】:

    【解决方案5】:

    这是最简单的方法是在数据源查询中使用数据库的Coalesce() or NVL() 函数来限制报表中的空数据。

    但这取决于您是否被允许更改数据源查询。如果没有,那么您可以寻求以前答案中提供的其他解决方案。

    【讨论】:

      猜你喜欢
      • 2020-06-13
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 2019-04-28
      • 1970-01-01
      • 2016-08-30
      相关资源
      最近更新 更多