Доброго времени суток, форумчане.
Ситуация такая: В LazReport требуется формировать таблицу для ручного заполнения в определенном месте.
Количество столбцов фиксировано, а количество строк зависит от ситуации.
Я решил попробовать следующее: Забросил MasterData в нужное место, привязал к виртуальному источнику данных, а в предыдущем элементе "Заголовок отчета" в свойстве Script написал следующее:
begin
MasterData1.DataSet:=col;
end
В моем случае col рассчитывается в коде самой программы.
Проблема в том, что MasterData1.DataSet меняется (проверял в Memo) при запуске формирования отчета, но количество видимых (отображаемых) строк в MasterData всегда равно дефолтному значению MasterData1.DataSet (то есть тому значению, которое определяется в дизайнере отчетов).
Кто может подсказать как решить такого рода проблему? Пробовал в разных местах задавать этот код, пробовал даже DetailData вместо MasterData использовать: везде формируется дефолтное количество строк.
Версия Lazarus - 2.0.6.
Динамическое формирование записей MasterData
Модератор: Модераторы
-
FairyFenix
- незнакомец
- Сообщения: 7
- Зарегистрирован: 14.08.2020 16:04:32
-
FairyFenix
- незнакомец
- Сообщения: 7
- Зарегистрирован: 14.08.2020 16:04:32
alexs писал(а):Можно вот так
Благодарю конечно, жаль только только не открывается шаблон. Пробовал открыть на версии 2.0.6 и 1.2.6: кроме "ошибки загрузки отчета" ничего не выдает. Используете модифицированный TfrReport?
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Штатный, из транкового лазаря.
Смысл там в том, что скриптом в мастер бэнде првоеряю - сколько записей сформировано
Скрипт на MasterData
Смысл там в том, что скриптом в мастер бэнде првоеряю - сколько записей сформировано
Скрипт на MasterData
Код: Выделить всё
begin
if ([LINE#] > CountR) then
STOPREPORT();
end-
FairyFenix
- незнакомец
- Сообщения: 7
- Зарегистрирован: 14.08.2020 16:04:32
alexs писал(а):Штатный, из транкового лазаря.
Смысл там в том, что скриптом в мастер бэнде првоеряю - сколько записей сформировано
Премного благодарен, попробую сегодня этот метод.
-
FairyFenix
- незнакомец
- Сообщения: 7
- Зарегистрирован: 14.08.2020 16:04:32
alexs писал(а):Код: Выделить всё
begin
if ([LINE#] > CountR) then
STOPREPORT();
end
К сожалению этот метод не подходит мне. Этот код прерывает создание отчета, если количество записей при создании превышает указанное число (в этом случае отчет не показывается вообще). Пробовал даже в связке ShowReport.
Возможно в будущем кому-нибудь пригодиться метод, который я использовал.
В Lazarus после подгрузки шаблона в LazReport прописал:
Код: Выделить всё
DatS:=Report.FindObject('MasterData1') as TfrBandView;
DatS.Dataset:=Col;где DatS объявлен как TfrBandView.
В этом случае можно программно определять Col (количество записей конкретно в текущей ситуации) и получать в отчете любое количество подготовленных записей не только для ручного заполнения.
