Значение по умолчанию для полей null в отчете Jasper
фон
ResultSet имеет много Double
поля значений (с шаблонами, такими как "###0.000"
). Некоторые значения могут быть null
.
1 ответов
Решение № 1
решение:
- используйте обычное двойное поле (
doubleField
) для значения столбца. - добавить текстовое поле статической строки в том же месте.
- измените двойное поле на Пусто, Когда Null.
- установить 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".