Сначала необходимо указать, пытаетесь ли вы использовать набор данных, определенный в вашем приложении, или набор данных, определенный непосредственно в вашем отчете (вкладка «Данные» в конструкторе FastReport)?
Если вы пытаетесь использовать набор данныхкоторый определен внутри вашего приложения (например, экземпляр AdoDataset, определенный в одном из ваших модулей данных), для этой цели вам не нужно привязывать MasterBand к вашему набору данных.динамически.Внутри отчета ваша MasterBand привязана к экземпляру TfrxDbDataset во время разработки.Во время выполнения ваш экземпляр frxDbDataset может быть подключен к любому набору данных в вашем проекте.
Вот как это будет:
1 - вы удаляете компонент frxReport и компонент frxDbDataset в вашей форме илиданных модуля.2. В конструкторе отчетов перейдите в раздел «Наборы данных» и добавьте доступный набор frxDbDataset в список наборов данных отчета.3- Вы добавляете диапазон основных данных и назначаете frxDbDataset его свойству набора данных.4. Теперь в своем коде перед показом или подготовкой отчета вы можете написать что-то вроде этого:
if MyOption = 1 then
frxDbDataset1.Dataset := AdoDataset1
else
frxDbDataset1.Dataset := AdoDataset2;
Все, что вы назначите для frxDbDataset, будет напечатано основной группой в вашем отчете.
Если вы определяете набор данных непосредственно внутри отчета, используя конструктор FastReport;тогда все внутри вашего отчета.Просто откройте конструктор fastreport и сделайте следующее:
1 - Перейдите на вкладку «Данные» и определите свои наборы данных (например, AdoQuery1).2- Выберите объект отчета на панели дерева отчетов.3- В инспекторе объектов перейдите на вкладку «События».4- Выберите подходящее событие;OnStartReport - хорошее событие для вашей работы.Дважды щелкните по нему, чтобы открыть редактор кода.5. Теперь вы можете назначить набор данных, определенный на вкладке данных, для диапазона основных данных, используя код PascalScript.Как то так:
procedure frxReport1OnStartReport(Sender: TfrxComponent);
begin
MasterData1.Dataset := <ADOQuery1."ADOQuery1">;
end;