LimeReport Forum

General Category | Основное => Discussion | Обсуждение => Topic started by: Sergei_sR on December 07, 2016, 08:53:13 AM

Title: Управление видимостью дата бэндов
Post by: Sergei_sR on December 07, 2016, 08:53:13 AM
Здравствуйте!

Имеется ли возможность управлять видимостью дата бэнда в зависимости от значения в таблице?
Опишу зачем надо:
Есть SQL таблица с результами измерений, одна строка - одно измерение. В некоторых результатах отсутствуют (NULL) некоторые поля.
В зависимости от наличия или отсутсвия этих данных внешний вид отчета (расположение строк) разное.
Сейчас решаю эту задачу постраничной генерацией, подставляя разные шаблоны, но в случии вывода в pdf это разные файлы, а хочется чтобы был один.
Как думается решить эту задачу: Если бы можно было управлять видимостью, то можно было бы вставить в шаблон два дата бенда с нужной компоновкой, но в работе выбирать только нужный.
Ниже, maurosanjo похожее спрашивает про поля и подгонку высоты. В принципе, меня бы и такой вариант устроил.

Из замеченного:
Собрал последний релиз. В дизайнере после открытия отчета в окне ScriptBrowser\Functions дублируются узлы SYSTEM, NUMBER,...

Пробовал сделать pdf на 10000 страниц. Все получилось удачно и довольно шустро.
Title: Re: Управление видимостью дата бэндов
Post by: Subst on December 07, 2016, 11:14:10 AM
Ну ты сам верно заметил.
Автоматическая высота в свойствах бэнда плюс использование скриптов - очевидное решение проблемы.
Title: Re: Управление видимостью дата бэндов
Post by: Sergei_sR on December 07, 2016, 12:13:40 PM
А как это сделать скриптами?
если управлять видимостью полей, то вместо них просто пустое место остается
А как привязать скрипт к бенду я не догадался.
Title: Re: Управление видимостью дата бэндов
Post by: Subst on December 07, 2016, 12:22:48 PM
По сути необходим бэнд с autoheight=true
внутри текстовое или несколько текстовых полей.

Когда все поля текстовые пустые, высота бэнда станет нулевой.

Скрипты привязываются к текстовым полям и регулируют их содержимое взависимости от каких-то параметров, например что-то вроде

$S{
 if ($D{table.field1=="")
  "";
 else
  $D{table.field2};
 }

если поле field1 пустое то и это поле не будет печаться. Если все поля не печаются, то бэнд не печатается

Как-то так
Title: Re: Управление видимостью дата бэндов
Post by: Sergei_sR on December 07, 2016, 01:39:18 PM
Спасибо за подсказку!
С дата бендами работает. Со статическими полями правда тоска, т.к. их тоже надо "скриптовать".
Теперь другая засада. Кроме дата бендов каждая страница имеет заголовок (PH) и окончание (PF), мне надо чтобы на листе был только один дата бенд (startNewPage). При печати сначала рендерятся страницы с первым бендом, а там где толжен быть второй печатает PH и PF и пустоту. Затем рендерит второй бенд теперь страницы где не должен печататся первый бенд - пустые (PH и PF), а где должен печататся второй - содержат второй бенд.
В итоге страниц в два раза больше.
Вобщем если у меня в таблице 5 строк, а вторая имеет дополнительные данные (т.е. печатается вторым бендом), то отрендерит так:
1,_,3,4,5,_,2,_,_,_  , где _ - пустая страница с PH и PF
Title: Re: Управление видимостью дата бэндов
Post by: Arin Alex on December 07, 2016, 07:48:37 PM
Sergei_sR, Проблему понял постараюсь поправить
Title: Re: Управление видимостью дата бэндов
Post by: Arin Alex on December 07, 2016, 11:09:49 PM
Sergei_sR, Некоторый костыль я приделал :)  можете проверить. В дальнейшем прикручу скриптование бандов, покамест времени категорически не хватает 
Title: Re: Управление видимостью дата бэндов
Post by: Sergei_sR on December 08, 2016, 09:57:37 AM
Спасибо большое!
Пустых страниц больше нет.