Динамический датасет

отредактировано 12:37 Раздел: FastReport 3.0
Проблема следующая
Если делать ShowReport, то band типа MasterData не отображается (как будто по Datasetу не бежим ), а если сначала вызвать DesignReport и уже из него просмотр, то все отображается нормально только со второго раза вызова просмотра. В макете отчета только бенд, связанный с TFRXDBDataset. Никаких событий, скриптов и т.п. нет.
Если FRXDBDataset создан в дизайн-тайме, то проблем нет
Использую Fastreport3 версии 3.21. Попробовал 3.22-3.24. Результат один.

В ЧЕМ МОЖЕТ БЫТЬ ПРОБЛЕМА?

Вот код
procedure TForm1.Button1Click(Sender: TObject);
const
ReportFile= 'C:\Projects\DELPHI7\FR3Designer\FR3\folio_detail5.fr3';
var
ibq:TIBQuery;
ibt:TIBTransaction;
ib:TibDataBase;
frds:TFRXDBDataset;
rep:TfrXReport;
begin
ib := IBDatabase1;
rep := frxReport1;
try
rep.LoadFromFile(ReportFile);
rep.DataSets.Clear;
ibq := TIBQuery.Create(self);
ibt := TIBTransAction.Create(self);
frds := TFRXDBDataset.Create(self);
ibt.DefaultDatabase := ib;
ibq.Database := ib;
ibq.Transaction := ibt;
ibq.SQL.Text := 'select * from rooms';
frds.Name := 'frds1';
frds.UserName := frds.Name;
frds.DataSet := ibq;
rep.DataSets.Add(frds);
ibq.Open;
ibt.CommitRetaining;
if CheckBox1.Checked then
Rep.ShowReport
else
rep.DesignReport;
finally
ibq.Close;
ibq.Free;
ibt.Free;
frds.free;
end;
end;

Комментарии

  • отредактировано 12:37
    Нашел, что если сделать 2 раза PrepareReport, то все ОК. Думаю, что как-то все не очень правильно

    Так ОК
    Rep.PrepareReport
    Rep.ShowReport
    Так тоже ОК
    Rep.PrepareReport
    Rep.PrepareReport
    Rep.DesignReport
    И Так тоже ОК
    Rep.PrepareReport
    Rep.PrepareReport
    Rep.ShowPreparedReport
  • gpigpi
    отредактировано 12:37
    а зачем используется rep.DataSets.Clear ?
  • отредактировано 12:37
    Попробуй создание датасета:
    frds := TFRXDBDataset.Create(self);
    поставить перед загрузкой отчета:
    rep.LoadFromFile(ReportFile);
  • отредактировано 12:37
    Noskov написал:
    Попробуй создание датасета:
    frds := TFRXDBDataset.Create(self);
    поставить перед загрузкой отчета:
    rep.LoadFromFile(ReportFile);
    Спасибо. так получилось

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.