Не могу разобраться с генерацией отчетов.
Допустим, есть запрос GetGamesReport_SQL — выборка из таблиц БД, например такой: "SELECT GUEST FROM GUESTS";
В отчете (BReport) созданы MasterHeader и MasterData.
MasterData содержит Memo-поле, в котором записано: [Guest].
Создан Dataset (BReport.DataSet := BonusDataSet), его функции реализованы след. образом:
procedure TReceptionData.BonusDatasetCheckEOF(Sender: TObject;
var Eof: Boolean);
begin
Eof := GetGamesReport_SQL.Eof;
if Eof then CommonData.Read_trans.Commit;
end;
procedure TReceptionData.BonusDatasetFirst(Sender: TObject);
begin
try
if not CommonData.Read_trans.InTransaction then CommonData.Read_trans.StartTransaction;
with GetGamesReport_SQL do
begin
if not Prepared then Prepare;
ExecQuery;
end;
except
Application.MessageBox('Запрос не выполнен.', CAPTION_MAIN);
if CommonData.Read_trans.InTransaction then CommonData.Read_trans.Rollback;
end;
end;
procedure TReceptionData.BonusDatasetNext(Sender: TObject);
begin
GetGamesReport_SQL.Next;
end;
Функция получения параметра:
procedure TReceptionData.BReportGetValue(const ParName: String; var ParValue: Variant);
begin
if (ParName = 'Guest') then ParValue := GetGamesReport_SQL.FieldByName('FULL_NAME').AsString;
end;
Вызов отчета:
procedure TReceptionData.CreateGameReport();
begin
if BReport.PrepareReport then BReport.ShowPreparedReport
else Application.MessageBox('Не удалось загрузить отчет', CAPTION_MAIN);
Выводится отчет без данных.
Как результаты запроса вывести в отчет?
Здравствуйте, MaxxSoft, Вы писали:
MS>Не могу разобраться с генерацией отчетов. MS>Допустим, есть запрос GetGamesReport_SQL — выборка из таблиц БД, например такой: "SELECT GUEST FROM GUESTS"; MS>В отчете (BReport) созданы MasterHeader и MasterData.
[Sorry, skipped]
MS>Выводится отчет без данных. MS>Как результаты запроса вывести в отчет?
Что-то ты перемудрил, как мне кажется...
1) Попробуй вместо ExecQuery использовать Open.
2) вынеси старт транзакций и коммит из обработчиков событий.
3) откажись от CheckEof, First, Next, GetValue — эти события больше для "юзердата" отчетов предназначены.
Здравствуйте, MaxxSoft, Вы писали:
DM>>3) откажись от CheckEof, First, Next, GetValue — эти события больше для "юзердата" отчетов предназначены.
MS>А как тогда связать DataSet и FReport?
TfrDBDataset тебе зачем даден?
Report.DataSet:=frDBDataset;
frDBDataset.DataSet:=Query;
//- дополнительные проперти, если надо
Здравствуйте, MaxxSoft, Вы писали:
MS>Здравствуйте, DarkMaster, Вы писали:
DM>>3) откажись от CheckEof, First, Next, GetValue — эти события больше для "юзердата" отчетов предназначены.
MS>А как тогда связать DataSet и FReport?
frDataSet.DataSet := DataSet;
И в отчете исользовать frDataSet.
... -= RSDN@Home 1.1.4 beta 3 rev 222 =- А в Winamp'e Весь в работе
Дункан Маклауд любил ходить в лес и издеваться над кукушками.
138385660
Здравствуйте, DarkMaster, Вы писали:
DM>Что-либо, отнаследованное от TDataset, чаще всего — TQuery etc...
TQuery это компонент или класс? В справке не могу найти, файл справки говорит не найден (с моей то удачей!).
Если я использую TIBSQL из него можно выдернуть этот DataSet? Там ведь он как-то хранится...
И еще вопросик появился — как зарегистрировать переменные в FastReport?
Здравствуйте, MaxxSoft, Вы писали:
DM>>Что-либо, отнаследованное от TDataset, чаще всего — TQuery etc... MS>TQuery это компонент или класс? В справке не могу найти, файл справки говорит не найден (с моей то удачей!).
Компонент. Вкладка "BDE" начиная с D6.
MS>Если я использую TIBSQL из него можно выдернуть этот DataSet? Там ведь он как-то хранится...
У тебя TIBQuery есть. Его и пользуй.
MS>И еще вопросик появился — как зарегистрировать переменные в FastReport?
Сходи на сайт ФастРепорта и скачай доку по его использованию и факи — там все это есть, причем на русском и с примерами.