LimeReport Forum
General Category | Основное => Discussion | Обсуждение => Topic started by: Sergei_sR on December 07, 2016, 08:53:13 am
-
Здравствуйте!
Имеется ли возможность управлять видимостью дата бэнда в зависимости от значения в таблице?
Опишу зачем надо:
Есть SQL таблица с результами измерений, одна строка - одно измерение. В некоторых результатах отсутствуют (NULL) некоторые поля.
В зависимости от наличия или отсутсвия этих данных внешний вид отчета (расположение строк) разное.
Сейчас решаю эту задачу постраничной генерацией, подставляя разные шаблоны, но в случии вывода в pdf это разные файлы, а хочется чтобы был один.
Как думается решить эту задачу: Если бы можно было управлять видимостью, то можно было бы вставить в шаблон два дата бенда с нужной компоновкой, но в работе выбирать только нужный.
Ниже, maurosanjo похожее спрашивает про поля и подгонку высоты. В принципе, меня бы и такой вариант устроил.
Из замеченного:
Собрал последний релиз. В дизайнере после открытия отчета в окне ScriptBrowser\Functions дублируются узлы SYSTEM, NUMBER,...
Пробовал сделать pdf на 10000 страниц. Все получилось удачно и довольно шустро.
-
Ну ты сам верно заметил.
Автоматическая высота в свойствах бэнда плюс использование скриптов - очевидное решение проблемы.
-
А как это сделать скриптами?
если управлять видимостью полей, то вместо них просто пустое место остается
А как привязать скрипт к бенду я не догадался.
-
По сути необходим бэнд с autoheight=true
внутри текстовое или несколько текстовых полей.
Когда все поля текстовые пустые, высота бэнда станет нулевой.
Скрипты привязываются к текстовым полям и регулируют их содержимое взависимости от каких-то параметров, например что-то вроде
$S{
if ($D{table.field1=="")
"";
else
$D{table.field2};
}
если поле field1 пустое то и это поле не будет печаться. Если все поля не печаются, то бэнд не печатается
Как-то так
-
Спасибо за подсказку!
С дата бендами работает. Со статическими полями правда тоска, т.к. их тоже надо "скриптовать".
Теперь другая засада. Кроме дата бендов каждая страница имеет заголовок (PH) и окончание (PF), мне надо чтобы на листе был только один дата бенд (startNewPage). При печати сначала рендерятся страницы с первым бендом, а там где толжен быть второй печатает PH и PF и пустоту. Затем рендерит второй бенд теперь страницы где не должен печататся первый бенд - пустые (PH и PF), а где должен печататся второй - содержат второй бенд.
В итоге страниц в два раза больше.
Вобщем если у меня в таблице 5 строк, а вторая имеет дополнительные данные (т.е. печатается вторым бендом), то отрендерит так:
1,_,3,4,5,_,2,_,_,_ , где _ - пустая страница с PH и PF
-
Sergei_sR, Проблему понял постараюсь поправить
-
Sergei_sR, Некоторый костыль я приделал :) можете проверить. В дальнейшем прикручу скриптование бандов, покамест времени категорически не хватает
-
Спасибо большое!
Пустых страниц больше нет.