Динамическое создание отчета
Проблема такая.. примерно такой код в версии 2.х работал просто на ура
В версии 3.х (перешли совсем недавно) репортер упорно не может выцепить значение поля. Приходится поступать таким образом:
Итак - суть вопроса. Как мне привязаться к динамически генерящемуся датасету, крайне желательно из шаблона. Причем в момент редактирования шаблона получить датасет невозможно.
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(... мягко говоря некрасивая.Итак - суть вопроса. Как мне привязаться к динамически генерящемуся датасету, крайне желательно из шаблона. Причем в момент редактирования шаблона получить датасет невозможно.
Комментарии
а) отчет полностью динамический - как быть с именами?
б) если у меня будет несколько бэндов MasterData?
в) хотелось бы связать бэнд с датасетом на этапе редактирования шаблона...
Возможно выходом будет перебор всех обьектов репорта, и если они унаследованы от бэнда, имеющего датасет - присваивание им датасета... Но, имхо, это тоже дико криво...
Какие еще будут предложения от разработчиков? Как они предполагают создание динамических отчетов?