if-else-if-else в выражении текстового поля

jasper-reports expression

75426 просмотра

5 ответа

6595 Репутация автора

На этот вопрос уже есть ответ здесь:

Я должен показать столбцы: - отправить - получить - отменено

В столбце отчета, проверяя значение из БД, которое является «Статус». Таким образом, если статус равен 1, то отправка, = 2 получение, = 3 отменено.

Выражение текстового поля в отчете jasper (? A: b) может принимать только одно условие. Как задать несколько условий? что-то вроде если-еще лестницы?

Автор: cherit Источник Размещён: 13.01.2011 07:17

Ответы (5)


26 плюса

3875 Репутация автора

Решение

Вы можете использовать вложенный троичный оператор для достижения этой цели, но это грязно.

Например:

(i == 1) ? "Send" : ((i == 2)? "Received" : "Cancelled");
Автор: Gordon Размещён: 13.01.2011 11:44

4 плюса

649 Репутация автора

Сделайте поле состояния параметром, передаваемым из вашего компонента. Таким образом, вы можете выполнить любую обработку, необходимую для вашего компонента, назначить результат переменной параметра и передать ее в свой отчет.

Автор: Sean Размещён: 24.01.2011 06:11

7 плюса

71 Репутация автора

Вы можете использовать метод replace (), но вы должны изменить класс поля на String, если это не так, EX:

$F{f_phone_type}.replace("0","Phone/ATA").replace("1","Gateway").replace("2","SIPTrunk")
Автор: Alex Размещён: 11.04.2011 02:41

4 плюса

408 Репутация автора

Мой предпочтительный метод - создать параметр с подстановками в форме HashMap, если у вас большая группа подстанций или они могут измениться.

Вы можете передать замены во время выполнения или установить значение по умолчанию. Преимущество заключается в том, что вы можете обновить карту, не перекомпилировав свой отчет.

Например, если бы у вас был параметр с именем «risk_types» (используя язык по умолчанию как groovy), вы бы установили значение параметра по умолчанию на что-то вроде

[1: "HIGH RISK", 2: "LOW RISK"]

В вашем коде вы должны иметь выражение вашего текстового поля как (где risk_type - это поле поиска из базы данных):

$P{risk_types}.get($F{risk_type})

Для элементов, отсутствующих на карте, вы получите нулевое значение, я расширю выражение текстового поля:

$P{risk_types}.get($F{risk_type}) ?: "UNDEFINED"
Автор: eli Размещён: 24.06.2013 05:03

1 плюс

11 Репутация автора

Boolean.valueOf(!($P{accWise}.equals("AC" ) && $F{RQAC_ACCREJ}.equals("R"))) полезно указать несколько условий в свойствах ireport.

Автор: Divya Размещён: 07.01.2014 06:22
Вопросы из категории :
32x32