Динамическое формирование записей MasterData

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
FairyFenix
незнакомец
Сообщения: 7
Зарегистрирован: 14.08.2020 16:04:32

Динамическое формирование записей MasterData

Сообщение FairyFenix »

Доброго времени суток, форумчане.
Ситуация такая: В LazReport требуется формировать таблицу для ручного заполнения в определенном месте.
Количество столбцов фиксировано, а количество строк зависит от ситуации.
Я решил попробовать следующее: Забросил MasterData в нужное место, привязал к виртуальному источнику данных, а в предыдущем элементе "Заголовок отчета" в свойстве Script написал следующее:

begin
MasterData1.DataSet:=col;
end

В моем случае col рассчитывается в коде самой программы.
Проблема в том, что MasterData1.DataSet меняется (проверял в Memo) при запуске формирования отчета, но количество видимых (отображаемых) строк в MasterData всегда равно дефолтному значению MasterData1.DataSet (то есть тому значению, которое определяется в дизайнере отчетов).

Кто может подсказать как решить такого рода проблему? Пробовал в разных местах задавать этот код, пробовал даже DetailData вместо MasterData использовать: везде формируется дефолтное количество строк.

Версия Lazarus - 2.0.6.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Можно вот так
У вас нет необходимых прав для просмотра вложений в этом сообщении.
FairyFenix
незнакомец
Сообщения: 7
Зарегистрирован: 14.08.2020 16:04:32

Сообщение FairyFenix »

alexs писал(а):Можно вот так

Благодарю конечно, жаль только только не открывается шаблон. Пробовал открыть на версии 2.0.6 и 1.2.6: кроме "ошибки загрузки отчета" ничего не выдает. Используете модифицированный TfrReport?
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Штатный, из транкового лазаря.
Смысл там в том, что скриптом в мастер бэнде првоеряю - сколько записей сформировано
Скрипт на MasterData

Код: Выделить всё

begin
  if ([LINE#] > CountR) then
     STOPREPORT();
end
FairyFenix
незнакомец
Сообщения: 7
Зарегистрирован: 14.08.2020 16:04:32

Сообщение FairyFenix »

alexs писал(а):Штатный, из транкового лазаря.
Смысл там в том, что скриптом в мастер бэнде првоеряю - сколько записей сформировано


Премного благодарен, попробую сегодня этот метод.
FairyFenix
незнакомец
Сообщения: 7
Зарегистрирован: 14.08.2020 16:04:32

Сообщение FairyFenix »

alexs писал(а):

Код: Выделить всё

begin
  if ([LINE#] > CountR) then
     STOPREPORT();
end


К сожалению этот метод не подходит мне. Этот код прерывает создание отчета, если количество записей при создании превышает указанное число (в этом случае отчет не показывается вообще). Пробовал даже в связке ShowReport.
Возможно в будущем кому-нибудь пригодиться метод, который я использовал.
В Lazarus после подгрузки шаблона в LazReport прописал:

Код: Выделить всё

DatS:=Report.FindObject('MasterData1') as TfrBandView;
DatS.Dataset:=Col;

где DatS объявлен как TfrBandView.
В этом случае можно программно определять Col (количество записей конкретно в текущей ситуации) и получать в отчете любое количество подготовленных записей не только для ручного заполнения.
Ответить