Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / iReport: Как спрятать субрепорт при условии / 8 сообщений из 8, страница 1 из 1
15.05.2012, 16:33
    #37795564
Iktomy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
iReport: Как спрятать субрепорт при условии
Доброго,

Имею следующую проблему: Необходимо спрятать (не отображать в готовом PDF бланке) таблицу, которая вытягивается в бланк субрепортом. Субрепорт содержит таблицу, в одной из ячеек которой отображается некая финальная сумма, типа "Итого". Значение этой суммы передается из субрепорта в основную форму через переменную returnFromSubReport1 . И субрепорт необходимо прятать, если эта переменная равна нулю.

Таких переменных несколько - для каждого субрепорта своя. Они суммируются в другом месте бланка, т.ч. убрать я их не могу (это на случай если поступят такие предложения).

В Common свойства элемента субрепорта, я задаю такое для “Print When Expression”: (new Double($V{returnFromSubReport1}.doubleValue()) != new Double(0)) ? Boolean.TRUE : Boolean.FALSE

В итоге, вне зависимости от того, возвращает переменная returnFromSubReport1 нулевое значение, или не нулевое - субрепорт тупо не отображается в финальном PDF.

Кроме этого, в ячейке где суммируются значения переменных, возвращаемых субрепортами (как я сказал - их несколько), не отображаются данные - как я понимаю, это из-за того, что returnFromSubReport1 получается null.

Подскажите, как побороть проблему? Как заставить субрепорт "прятаться" и не рушится суммированию значений?
...
Рейтинг: 0 / 0
15.05.2012, 18:05
    #37795789
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
iReport: Как спрятать субрепорт при условии
В 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 пока не возвращал ничего, так что это только догадки :(
...
Рейтинг: 0 / 0
15.05.2012, 18:55
    #37795882
Iktomy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
iReport: Как спрятать субрепорт при условии
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

по остальному - поробую.

спасибо за ответ
...
Рейтинг: 0 / 0
15.05.2012, 18:59
    #37795890
Iktomy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
iReport: Как спрятать субрепорт при условии
sanBezЕсли в Table сумма находится в своем Dataset, то может вначале ее запихнуть в доп. переменную сабрепорта (ну как бы это обозвать - основной Dataset сабрепорта что-ли), а потом уже возвращать это

так и реализовано.
...
Рейтинг: 0 / 0
16.05.2012, 15:53
    #37797329
Iktomy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
iReport: Как спрятать субрепорт при условии
($V{vName}.equals( new Double(0) )) ? new Boolean(false) : new Boolean(true) - более грамотно, чем
(new Double($V{vName}.doubleValue()) != new Double(0)) ? Boolean.TRUE : Boolean.FALSE
по крайней мере работает.

касательно скрытия субрепорта - не могу побороть. не знаю, в чем причина. не буду городить чушь и отпишусь о результатах позже
...
Рейтинг: 0 / 0
16.05.2012, 17:51
    #37797571
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
iReport: Как спрятать субрепорт при условии
Iktomy,

Может попробовать обойти это спрятав band с таблицей в сабрепорте? А в основном убрать PrintWhenExpression и поставить remove line when blank.
...
Рейтинг: 0 / 0
17.05.2012, 16:02
    #37799305
Iktomy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
iReport: Как спрятать субрепорт при условии
sanBez,

Спасибо, я так и сделал, собственно, задолбавшись мучиться.
...
Рейтинг: 0 / 0
18.05.2012, 14:08
    #37800990
rivera
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
iReport: Как спрятать субрепорт при условии
2iktomy

авторВ Common свойства элемента субрепорта, я задаю такое для “Print When Expression”: (new Double($V{returnFromSubReport1}.doubleValue()) != new Double(0)) ? Boolean.TRUE : Boolean.FALSE

поясните в каком поле вы это дописали? я не совсем понял

У меня сейчас примерно такая же задача: прятать (в идеале, даже не отрабатывать его) сабрепорт, если одна из колонок главного отчета возвращает определенное значение.
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / iReport: Как спрятать субрепорт при условии / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]