2016-02-24 2 views
0

У меня много проблем при сравнении двойных значений в JasperReports. Ничто из того, что я делаю, не работает.Jasper Report ireport 5.6.0 Сравнение двойников Условие не работает

Должно быть показано, что 3 разных сообщения зависят от двойного значения. Код:

($P{number}.doubleValue() <= 1.0 ? msg($R{report.text2a}, $P{marshall}) : 
($P{number}.doubleValue() > 1.0 && $P{number}.doubleValue() <= 2.0 ? msg($R{report.text2b}, $P{marshall}) : msg($R{report.text2c}, $P{marshall})) 
) 

Параметр «номер» является правильным, потому что это было показано ранее в докладе, и она была напечатана, но когда я генерировать PDF, ничего не показали.

Если значение меньше 1, один текст, если он находится между 1 и 2, второй текст и более 2, третий текст.

Любая помощь?

+0

Ваш тест кажется хорошим, может быть, проблема исходит от результата? Просто попробуйте напечатать простые строки вместо 'msg [..]' –

+1

@DeathGun Вы должны опубликовать тест * jrxml * –

ответ

0

У меня была аналогичная проблема с более поздней версией яшмы и здесь я не видел решения. Я не знаю, почему, но иногда яшма ломается при сравнении двойных значений, и иногда это сработает. То, что сработало для меня, это создание промежуточной переменной при сравнении. Что-то вроде:

<variable name="numberLTEqual" class="java.lang.Boolean"> 
    <variableExpression><![CDATA[$P{number}<=0]]></variableExpression> 
</variable> 

, а затем, используя переменную вместо теста:

$V{numberLTEqual} ? msg($R{report.text2a}, $P{marshall}... 
Смежные вопросы