Программная подмена данных
Привет всем!!! Собственно задача следующая: есть готовый отчет в котором две таблицы, между которыми создана связь (Master-details). Также созданы два Бэнда, которые выводять данные из этих таблиц (получается некое дерево или группы с данными). При запуске отчета из дизайнера все работает на ура.
Далее, я беру этот отчет, и запускаю программно на стороне серверной части моего приложения.
На сервере я собираю данные в DataSet'ы с теми же именами, что и таблицы в файле отчета.
Далее я регистрирую эти датасеты в отчете, после чего, я так понимаю, слетают связи у таблиц.
Пример запуска ниже:
tableList - это List<DataTable>
tableList.ForEach(r =>
{
if (r.DataSet == null)
{
DataSet d = new DataSet(r.TableName);
d.Tables.Add®;
pReport.RegisterData(r.DataSet);
}
else
pReport.RegisterData(r.DataSet);
});
// Далее экспорт
if (pReport.Prepare())
{
using (var fStream = new MemoryStream())
{
pReport.Export(new PDFExport(), fStream);
result = fStream.ToArray();
}
}
Сбор данных из самого FastReport необходимо исключить в силу специфики реализации серверной части приложения.
Есть ли варианты не регистрации, а подмены данных таблиц в отчете, чтобы связь Master-details сохранялась!????
Далее, я беру этот отчет, и запускаю программно на стороне серверной части моего приложения.
На сервере я собираю данные в DataSet'ы с теми же именами, что и таблицы в файле отчета.
Далее я регистрирую эти датасеты в отчете, после чего, я так понимаю, слетают связи у таблиц.
Пример запуска ниже:
tableList - это List<DataTable>
tableList.ForEach(r =>
{
if (r.DataSet == null)
{
DataSet d = new DataSet(r.TableName);
d.Tables.Add®;
pReport.RegisterData(r.DataSet);
}
else
pReport.RegisterData(r.DataSet);
});
// Далее экспорт
if (pReport.Prepare())
{
using (var fStream = new MemoryStream())
{
pReport.Export(new PDFExport(), fStream);
result = fStream.ToArray();
}
}
Сбор данных из самого FastReport необходимо исключить в силу специфики реализации серверной части приложения.
Есть ли варианты не регистрации, а подмены данных таблиц в отчете, чтобы связь Master-details сохранялась!????
Комментарии
System.Data.DataSet dsMain = new System.Data.DataSet();
adCars = new iAnywhere.Data.AsaClient.AsaDataAdapter();
adCars.SelectCommand = comCars;
adCars.Fill(dsMain, "Cars");
adOrders = new iAnywhere.Data.AsaClient.AsaDataAdapter();
adOrders.SelectCommand = comOrders;
adOrders.Fill(dsMain, "Orders");
DataRelation myDataRelation;
myDataRelation = new DataRelation("CarsOrd", dsMain.Tables["Cars"].Columns["id"], dsMain.Tables["Orders"].Columns["car_send_id"]);
dsMain.Relations.Add(myDataRelation);