Как «Распечатать когда» с условием - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть вопрос, у меня есть подотчет, который печатает много строк, потому что он находится в полосе подробностей, для меня это нормально, но я хочу фильтровать строки на основе параметров, когда я печатаю отчет, я использовал опцию «print when», чтобы установить логическое условие, но оно не работает, это работает только с одним параметром.

Условие:

(!"N".equals($P{Chk_Amministratori})
|| ($F{field1} != $P{CheckDinamico1}
|| $F{field1} != $P{CheckDinamico2}
|| $F{field1} != $P{CheckDinamico3}
|| $F{field1} != $P{CheckDinamico4}
|| $F{field1} != $P{CheckDinamico5}
|| $F{field1} != $P{CheckDinamico6}
|| $F{field1} != $P{CheckDinamico7}
|| $F{field1} != $P{CheckDinamico8}
|| $F{field1} != $P{CheckDinamico10}) ? Boolean.TRUE : Boolean.FALSE

Если я добавлю параметр, он будет работать, например

$ F {field1}! = $ P {CheckDinamico10}? Boolean.TRUE: Boolean.FALSE

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 24 апреля 2020

Логика c в ваших выражениях неверна. У вас есть это

$F{field1} != $P{CheckDinamico1}
|| $F{field1} != $P{CheckDinamico2}
|| ...

Допустим, CheckDinamico1 равен 5, а CheckDinamico2 равен 7. Итак, ваши выражения - field1! = 5 ИЛИ field1! = 7 ИЛИ

Это выражение истинно независимо от значение поля1. Если field1 равно 3, оно будет отличаться от 5 и 7, поэтому выражение истинно. Если fiedl1 равен 5, он будет отличаться от 7, и из-за ИЛИ выражение также будет истинным. И если field1 равно 7, оно будет отличаться от 5, поэтому снова выражение будет истинным.

Может быть, вы хотели И вместо ИЛИ в выражении? Кроме того, как заметил Alex K , != может не всегда работать, поэтому безопаснее использовать equals, и вы можете использовать примитивные логические выражения, вам не нужно Boolean. Поэтому попробуйте что-то вроде этого:

(!"N".equals($P{Chk_Amministratori})
|| (!$F{field1}.equals($P{CheckDinamico1})
&& !$F{field1}.equals($P{CheckDinamico2})
&& !$F{field1}.equals($P{CheckDinamico3})
&& !$F{field1}.equals($P{CheckDinamico4})
&& !$F{field1}.equals($P{CheckDinamico5})
&& !$F{field1}.equals($P{CheckDinamico6})
&& !$F{field1}.equals($P{CheckDinamico7})
&& !$F{field1}.equals($P{CheckDinamico8})
&& !$F{field1}.equals($P{CheckDinamico10}))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...