Значение по умолчанию для полей null в отчете Jasper

фон

ResultSet имеет много Double поля значений (с шаблонами, такими как "###0.000"). Некоторые значения могут быть null.

1 ответов


Решение № 1

решение:

  1. используйте обычное двойное поле (doubleField) для значения столбца.
  2. добавить текстовое поле статической строки в том же месте.
  3. измените двойное поле на Пусто, Когда Null.
  4. установить PrintWhenExpression значение для текстового поля строку: $F{doubleField} == null.

решение № 2

проблема в том, как вы указали, что Double и String - это два разных типа данных. Можно назначить строковую переменную значению Double с помощью соответствующего выражения. Затем используйте переменную String в качестве поля. Выражение может выглядеть так:

($F{doubleField} == null) ?
  "N/A" : new java.text.DecimalFormat("#.##").format($F{doubleField})

(примечание: Я предпочитаю использовать == вместо !=. Думаю, что положительный.)

решение № 3

измените инструкцию SQL для предварительного форматирования Double в виде текстовой строки и используйте "N/A" в строке (используя CASE или DECODE оператор в запросе).

избегайте этого решения, хотя, как это не ремонтопригодно.

рекомендация

не Закодируйте строку "N/A" по всему отчету(отчетам); поместите текст "N/A" в константу или параметр со значением по умолчанию "N/A".