Значение по умолчанию для полей 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".