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

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

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

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

Сообщение FairyFenix » 14.08.2020 17:17:14

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

begin
MasterData1.DataSet:=col;
end

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

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

Версия Lazarus - 2.0.6.
FairyFenix
незнакомец
 
Сообщения: 5
Зарегистрирован: 14.08.2020 17:04:32

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

Сообщение alexs » 15.08.2020 21:49:47

Можно вот так
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3932
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

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

Сообщение FairyFenix » 17.08.2020 17:30:10

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

Благодарю конечно, жаль только только не открывается шаблон. Пробовал открыть на версии 2.0.6 и 1.2.6: кроме "ошибки загрузки отчета" ничего не выдает. Используете модифицированный TfrReport?
FairyFenix
незнакомец
 
Сообщения: 5
Зарегистрирован: 14.08.2020 17:04:32

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

Сообщение alexs » 18.08.2020 09:15:54

Штатный, из транкового лазаря.
Смысл там в том, что скриптом в мастер бэнде првоеряю - сколько записей сформировано
Скрипт на MasterData
Код: Выделить всё
begin
  if ([LINE#] > CountR) then
     STOPREPORT();
end
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3932
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

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

Сообщение FairyFenix » 18.08.2020 12:29:16

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


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

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

Сообщение FairyFenix » 21.08.2020 10:07:02

alexs писал(а):
Код: Выделить всё
begin
  if ([LINE#] > CountR) then
     STOPREPORT();
end


К сожалению этот метод не подходит мне. Этот код прерывает создание отчета, если количество записей при создании превышает указанное число (в этом случае отчет не показывается вообще). Пробовал даже в связке ShowReport.
Возможно в будущем кому-нибудь пригодиться метод, который я использовал.
В Lazarus после подгрузки шаблона в LazReport прописал:
Код: Выделить всё
DatS:=Report.FindObject('MasterData1') as TfrBandView;
DatS.Dataset:=Col;

где DatS объявлен как TfrBandView.
В этом случае можно программно определять Col (количество записей конкретно в текущей ситуации) и получать в отчете любое количество подготовленных записей не только для ручного заполнения.
FairyFenix
незнакомец
 
Сообщения: 5
Зарегистрирован: 14.08.2020 17:04:32


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru