Проблем: Не изменяется отчет при изменениях данных
Есть простой отчет, где в мастердате выводятся поля (через dataset). При первом вызове все происходит исключительно великолепно, все показывается что надо, но вот при последующих (когда меняются данные dataset), отчет продолжает выдавать то, что он показал в первый раз. Как с этим бороться? Чистить MasterData? Как?
Комментарии
report.PrepareReport(true);
report.ShowPreparedReport();
не помогает. Формирую репорт и показываю так:
TfrxReportClass report;
DataTable dataset;
report = new TfrxReportClass();
dataset = new FrxDataTable("DemoDataset");
dataset.Clear();
//тут забивается dataset
dataset.AcceptChanges();
report.LoadReportFromFile(reportname);
report.PrepareReport(true);
report.ShowPreparedReport();
Вместо последних двух строчек пробовал и просто
report.ShowReport()
Одинаково... Я сейчас уже офигею, блин. Помогите...
private void ShowReport(DataView view, DataColumnCollection columns, string reportname)
{
TfrxReportClass report;
DataTable dataset;
report = new TfrxReportClass();
dataset = new FrxDataTable("DemoDataset");
dataset.Clear();
foreach (DataColumn column in columns)
{
dataset.Columns.Add(column.Caption.ToString(), typeof(string));
}
for (int j=0; j<view.Count; j++)
{
DataRow newrow = dataset.NewRow();
for(int i=0; i<columns.Count; i++)
{
newrow = view[j];
}
dataset.Rows.Add(newrow);
}
dataset.AcceptChanges();
report.LoadReportFromFile(reportname);
report.ShowReport();
}
private void ShowReport(DataView view, DataColumnCollection columns, string reportname)
.
Соответственно, при следующем вызове ShowReport, FR движок выбирает первый зарегистрированный датасет с соответствущюим именем.
Существует 3 способа решения проблемы:
1-й: Создавать датасет в конструкторе класса.
2-й: Принудельно удалять объект перед выходом из функции, которая его создала.
3-й: Не создавать датасеты с одинаковым именем.