как бороться со сложным ветвлением в iReport или Jasper - PullRequest
0 голосов
/ 31 января 2011

Мне нужно заполнить поле в отчете на основе конечного результата сложного оператора ветвления. Как мне сделать это в iReport? В отчете должна отображаться другая строка в зависимости от того, что находится в разных полях базы данных. Я делаю действительно сложный оператор SQL? Я использую переменные?

Так, например,

Если поле х = 1 ЕСЛИ у = 1 ЕСЛИ z = 1 Поле должно читаться как A

Если х = 1 ЕСЛИ у = 1 ЕСЛИ z = 2 Поле должно читаться как B

Ответы [ 4 ]

1 голос
/ 03 февраля 2011

Вы можете сделать что-то похожее на следующее:

( $F{staff_type} == null ? new String("") :
( $F{staff_type}.equalsIgnoreCase("Permanent") ? new String("1") :
( $F{staff_type}.equalsIgnoreCase("Non-permanent") ? new String("2") : new String("")
)))

По сути, вам нужно использовать вложенные выражения условий.

1 голос
/ 04 июня 2011

в текстовом выражении напишите выражение, подобное этому

(($F{PAYMENTMODE}.equals("CS")) ? "Cash":($F{PAYMENTMODE}.equals("CQ"))? "Cheque":"Bank")e

0 голосов
/ 14 декабря 2011

Обычно я обрабатываю всю логику программирования перед передачей данных в Jasper Report Engine, но в некоторых случаях требуется пост-обработка или пост-проверка. Если это тот сценарий, и если бы у меня было МНОГИЕ случаи (строки) для проверки, я бы написал код сценария «Jasper Report Scriptlet» и обработал бы эту логику там (чтобы код / ​​отчет был читаемым и поддерживаемым, а также для повторного использования кода). Если нужно проверить только 2 или 3 строки, я бы использовал оператор Ternary.

Если вы хотите использовать скриптлет отчета, создать класс скриптлета (или использовать существующий), код метода для обработки этой логики (например, метод 'checkString') и поместить $ P {REPORT_SCRIPTLET} .checkString (someString) в выражении TextField.

0 голосов
/ 31 января 2011

Я думаю, что самый простой способ сделать это - заполнить поле (поля) параметром, передаваемым компонентом поддержки.Соединение jdbc создается в bean-компоненте и передается в отчет, поэтому должно быть относительно легко получить доступ к нужному полю или полям и выполнить данные с помощью метода, который определяет результат ветвления.Присвойте результат параметру и передайте его отчету в переменной jasperParameter в JasperFillManager.fillReport (файл, параметры, jdbcConnection).

...