|
|
|
iReport: Как спрятать субрепорт при условии
|
|||
|---|---|---|---|
|
#18+
Доброго, Имею следующую проблему: Необходимо спрятать (не отображать в готовом PDF бланке) таблицу, которая вытягивается в бланк субрепортом. Субрепорт содержит таблицу, в одной из ячеек которой отображается некая финальная сумма, типа "Итого". Значение этой суммы передается из субрепорта в основную форму через переменную returnFromSubReport1 . И субрепорт необходимо прятать, если эта переменная равна нулю. Таких переменных несколько - для каждого субрепорта своя. Они суммируются в другом месте бланка, т.ч. убрать я их не могу (это на случай если поступят такие предложения). В Common свойства элемента субрепорта, я задаю такое для “Print When Expression”: (new Double($V{returnFromSubReport1}.doubleValue()) != new Double(0)) ? Boolean.TRUE : Boolean.FALSE В итоге, вне зависимости от того, возвращает переменная returnFromSubReport1 нулевое значение, или не нулевое - субрепорт тупо не отображается в финальном PDF. Кроме этого, в ячейке где суммируются значения переменных, возвращаемых субрепортами (как я сказал - их несколько), не отображаются данные - как я понимаю, это из-за того, что returnFromSubReport1 получается null. Подскажите, как побороть проблему? Как заставить субрепорт "прятаться" и не рушится суммированию значений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 16:33 |
|
||
|
iReport: Как спрятать субрепорт при условии
|
|||
|---|---|---|---|
|
#18+
В Common свойства элемента субрепорта, я задаю такое для “Print When Expression”: (new Double($V{returnFromSubReport1}.doubleValue()) != new Double(0)) ? Boolean.TRUE : Boolean.FALSE Кучу раз такое видел и никогда не мог понять почему нельзя убрать "? Boolean.TRUE : Boolean.FALSE" Это не совсем по теме правда :) В итоге, вне зависимости от того, возвращает переменная returnFromSubReport1 нулевое значение, или не нулевое - субрепорт тупо не отображается в финальном PDF. Кроме этого, в ячейке где суммируются значения переменных, возвращаемых субрепортами (как я сказал - их несколько), не отображаются данные - как я понимаю, это из-за того, что returnFromSubReport1 получается null. А вот тут какое-то противоречие. Так возвращается null или "нулевое значение, или не нулевое" ? Дополнительно. Вы используете в сабрепорте Table component? У которого свой Dataset? Собственно по теме. Я бы попробовал: 1. Для переменных основного отчета, которые в PrintWhenExpression поставить initial value = 1.0 Возможно начальное значение этой переменной 0 по умолчанию и JR вообще не выполняет subreport. Тогда и возвращать нечего. А тут есть шанс, что он выполнит и вернет то что надо. 2. Если в Table сумма находится в своем Dataset, то может вначале ее запихнуть в доп. переменную сабрепорта (ну как бы это обозвать - основной Dataset сабрепорта что-ли), а потом уже возвращать это значение. Может джасперу тяжко возвращать значение из вложенного Dataset? Я к сожалению из Table пока не возвращал ничего, так что это только догадки :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 18:05 |
|
||
|
iReport: Как спрятать субрепорт при условии
|
|||
|---|---|---|---|
|
#18+
sanBezВ Common свойства элемента субрепорта, я задаю такое для “Print When Expression”: (new Double($V{returnFromSubReport1}.doubleValue()) != new Double(0)) ? Boolean.TRUE : Boolean.FALSE Кучу раз такое видел и никогда не мог понять почему нельзя убрать "? Boolean.TRUE : Boolean.FALSE" Это не совсем по теме правда :) тогда ошибка при компиляции: Cannot cast from boolean to Boolean по остальному - поробую. спасибо за ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 18:55 |
|
||
|
iReport: Как спрятать субрепорт при условии
|
|||
|---|---|---|---|
|
#18+
sanBezЕсли в Table сумма находится в своем Dataset, то может вначале ее запихнуть в доп. переменную сабрепорта (ну как бы это обозвать - основной Dataset сабрепорта что-ли), а потом уже возвращать это так и реализовано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 18:59 |
|
||
|
iReport: Как спрятать субрепорт при условии
|
|||
|---|---|---|---|
|
#18+
($V{vName}.equals( new Double(0) )) ? new Boolean(false) : new Boolean(true) - более грамотно, чем (new Double($V{vName}.doubleValue()) != new Double(0)) ? Boolean.TRUE : Boolean.FALSE по крайней мере работает. касательно скрытия субрепорта - не могу побороть. не знаю, в чем причина. не буду городить чушь и отпишусь о результатах позже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2012, 15:53 |
|
||
|
iReport: Как спрятать субрепорт при условии
|
|||
|---|---|---|---|
|
#18+
Iktomy, Может попробовать обойти это спрятав band с таблицей в сабрепорте? А в основном убрать PrintWhenExpression и поставить remove line when blank. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2012, 17:51 |
|
||
|
iReport: Как спрятать субрепорт при условии
|
|||
|---|---|---|---|
|
#18+
sanBez, Спасибо, я так и сделал, собственно, задолбавшись мучиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2012, 16:02 |
|
||
|
iReport: Как спрятать субрепорт при условии
|
|||
|---|---|---|---|
|
#18+
2iktomy авторВ Common свойства элемента субрепорта, я задаю такое для “Print When Expression”: (new Double($V{returnFromSubReport1}.doubleValue()) != new Double(0)) ? Boolean.TRUE : Boolean.FALSE поясните в каком поле вы это дописали? я не совсем понял У меня сейчас примерно такая же задача: прятать (в идеале, даже не отрабатывать его) сабрепорт, если одна из колонок главного отчета возвращает определенное значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2012, 14:08 |
|
||
|
|

start [/forum/topic.php?fid=31&msg=37797571&tid=1534471]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
150ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 255ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...