【问题标题】:Print a field when certain value is not present Jasper reports当某个值不存在时打印一个字段 Jasper 报告
【发布时间】:2015-10-02 23:48:19
【问题描述】:

我正在使用 iReport 创建一个 JasperReports 的报告。我有一个日期字段,其中一次实例是01-JAN-1900。我需要任何时候日期字段具有此值,然后打印null 值。我试过这个:

<textField pattern="dd-MMM-yyyy" isBlankWhenNull="true">
                    <reportElement uuid="4dd05795-8363-4cf3-ad30-239aac3a086f" x="3" y="0" width="63" height="15">
                        <printWhenExpression><![CDATA[$F{TRAN_DATE} != "01-JAN-1900"]]></printWhenExpression>
                    </reportElement>
                    <textElement>
                        <font size="9"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{TRAN_DATE}]]></textFieldExpression>
                </textField>

但该值仍在打印中。我如何做到这一点?

【问题讨论】:

  • 您可以更改 Java 类中提供值的 getter: return value.equals("01-JAN-1900") ?空:值;
  • 它来自 sql select 语句,由于报告按日期排序,因此在将其放入报告之前我无法将其设为 null。
  • $F{TRAN_DATE} 的类型是什么?如果这是 java.util.Date 与 String 的比较将不起作用。也许您应该尝试将 intValue 与 0 ($F{TRAN_DATE}.intValue() != 0 ? ...) 进行比较?

标签: jasper-reports


【解决方案1】:

您无法比较不同的类型。删除字符串文字并比较日期时间类型。

【讨论】:

  • 如果 $F{TRAN_DATE} 是 java.util.Date 类型,则使用 equals() 测试是否相等,使用 after() 或 before () 测试优先级。
【解决方案2】:

如果您的字段 $F{TRAN_DATE} 是 java.util.Date 类型,请将其更改为 java.lang.String 并且您的条件应该有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多