Вы должны сначала указать, пытаетесь ли вы использовать набор данных, определенный в приложении, или набор данных, определенный непосредственно в отчете (вкладка «Данные» в дизайне FastReport)?
Если вы пытаетесь использовать набор данных, определенный внутри вашего приложения (например, экземпляр AdoDataset, определенный в одном из ваших модулей данных), для такой цели вам не нужно привязывать MasterBand к вашему набору данных , динамически. Внутри отчета ваш MasterBand привязан к экземпляру TfrxDbDataset во время разработки. Во время выполнения ваш экземпляр frxDbDataset может быть подключен к любому набору данных в вашем проекте.
Вот как это будет:
1- Вы уронить компонент frxReport и компонент frxDbDataset на вашей форме или данных-модуль. 2- В дизайнере отчетов перейдите в раздел «Наборы данных» и добавьте доступный файл frxDbDataset в список наборов данных отчета. 3- Вы добавляете диапазон основных данных и присваиваете свойству набора данных свойству Dataset значение frxDbDataset. -Теперь в вашем коде, перед показом или подготовки доклада, вы можете написать что-то вроде этого:
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;
Ваше решение не работает с использованием FastReports4/delphi XE2 Я могу видеть, что группа печатается много раз, если я устанавливаю StartNewPage, однако я не вижу никаких данных в ней. Есть ли дополнительный шаг для определения полей для него (динамический, без учета типов данных)? – ertx