Динамическое создание отчета

отредактировано 15:30 Раздел: FastReport 3.0
Проблема такая.. примерно такой код в версии 2.х работал просто на ура
procedure ShowRep(RepName:string; DS:TDataSet);
begin
  frxDBDataset:=TfrxDBDataset.Create(nil);
  frxReport:=TfrxReport.Create(nil);
  try
    frxDBDataset.DataSet:=DS;
    frxReport.LoadFromFile(RepName);
    frxReport.DataSet:=frxDBDataset;
    frxReport.ShowReport;
  finally
    frxReport.Free;
    frxDBDataset.Free;
  end;
end;
В шаблоне отчета для бэндов при этом источник данных не указывался. При этом если в шаблоне указывалось, допустим, в компоненте типа TfrMemoView конструкция "Значение поля MyField=[MyField]", то это значение поля MyField бралось из датасета. Все было прекрасно и удобно...
В версии 3.х (перешли совсем недавно) репортер упорно не может выцепить значение поля. Приходится поступать таким образом:
frxDBDataset.Name:='MainDataSet';
  frxDBDataset.DataSet:=DS;
  frxReport.LoadFromFile(RepName);
  frxReport.DataSets.Add(frxDBDataset);
  TfrxMasterData(frxReport.Pages[0].FindObject('MasterData')).DataSetName:='MainDataSet';
  frxReport.ShowReport;
Тут я вынужден жестко завязываться на имя банда ("MasterData", а ведь их может быть несколько)... В дизайнере для банда я не могу прописать имя датасета (это было бы выходом, так как входной датасет только один). Да и конструкция TfrxMasterData(... мягко говоря некрасивая.
Итак - суть вопроса. Как мне привязаться к динамически генерящемуся датасету, крайне желательно из шаблона. Причем в момент редактирования шаблона получить датасет невозможно.

Комментарии

  • отредактировано 15:30
    В 2-ке можно было много чего, только от этого было много бардака ;) Поступайте, как написали во втором варианте кода - все правильно.
  • отредактировано September 2005
    Бардак-то бардаком... Но:
    а) отчет полностью динамический - как быть с именами?
    б) если у меня будет несколько бэндов MasterData?
    в) хотелось бы связать бэнд с датасетом на этапе редактирования шаблона...

    Возможно выходом будет перебор всех обьектов репорта, и если они унаследованы от бэнда, имеющего датасет - присваивание им датасета... Но, имхо, это тоже дико криво...
    Какие еще будут предложения от разработчиков? Как они предполагают создание динамических отчетов?

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

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