Добрый день
В отчете есть источник данных DataSet
Необходимо заполнить его из WindowsForms приложения
Подскажите где почитать про то как это сделать.
Спасибо.
Как заполнить DataSet отчета из WindowsForms
-
- Сообщения: 2
- Зарегистрирован: 04 авг 2016, 15:48
Re: Как заполнить DataSet отчета из WindowsForms
День добрый!
В самом простом случае, допустим на событие OnClick какой-нибудь кнопки, это будет выглядеть так:
И далее в отчёте вызываем уже {Orders.Id} или {Orders.Name} и т.д.
Тоже самое можно проделать и с DataSet.
В самом простом случае, допустим на событие OnClick какой-нибудь кнопки, это будет выглядеть так:
Код: Выделить всё
const string reportSource = "Orders"; // название вашего DataSource в отчёте
stiReport.RegData(reportSource, dtOrders); // регистрируем источник
stiReport.Dictionary.Synchronize();
stiReport.Dictionary.DataSources[0].Name = reportSource; // переименовываем источник
stiReport.Dictionary.DataSources[0].Alias = reportSource;
// после можно рендерить отчёт
stiReport.Show();
Тоже самое можно проделать и с DataSet.
-
- Сообщения: 2
- Зарегистрирован: 04 авг 2016, 15:48
Re: Как заполнить DataSet отчета из WindowsForms
Спасибо.
написал вот такой код.
StiReport stiReport = new StiReport();
stiReport.Load("stiCommon.mrt");
const string reportSource = "DS1"; // название вашего DataSource в отчёте
DataTable dtOrders = new DataTable();
dtOrders.Columns.Add("col1");
dtOrders.Rows.Add("value1");
dtOrders.Rows.Add("value2");
dtOrders.Rows.Add("value3");
dtOrders.Rows.Add("value4");
dtOrders.Rows.Add("value5");
stiReport.RegData(reportSource, dtOrders); // регистрируем источник
stiReport.Dictionary.Synchronize();
stiReport.Dictionary.DataSources[0].Name = reportSource; // переименовываем источник
stiReport.Dictionary.DataSources[0].Alias = reportSource;
// после можно рендерить отчёт
stiReport.Compile();
stiReport.Show();
Пишет ошибку "Дополнительные сведения: c:\Users\andrey\AppData\Local\Temp\rautckni.0.cs(3669,22) : error CS0102: Класс "Reports.Report" уже содержит определение для "DS1DataSource""
Источник DS1 в отчете уже есть и именно его надо заполнить.
Подскажите, что я делаю не так?
Спасибо.
написал вот такой код.
StiReport stiReport = new StiReport();
stiReport.Load("stiCommon.mrt");
const string reportSource = "DS1"; // название вашего DataSource в отчёте
DataTable dtOrders = new DataTable();
dtOrders.Columns.Add("col1");
dtOrders.Rows.Add("value1");
dtOrders.Rows.Add("value2");
dtOrders.Rows.Add("value3");
dtOrders.Rows.Add("value4");
dtOrders.Rows.Add("value5");
stiReport.RegData(reportSource, dtOrders); // регистрируем источник
stiReport.Dictionary.Synchronize();
stiReport.Dictionary.DataSources[0].Name = reportSource; // переименовываем источник
stiReport.Dictionary.DataSources[0].Alias = reportSource;
// после можно рендерить отчёт
stiReport.Compile();
stiReport.Show();
Пишет ошибку "Дополнительные сведения: c:\Users\andrey\AppData\Local\Temp\rautckni.0.cs(3669,22) : error CS0102: Класс "Reports.Report" уже содержит определение для "DS1DataSource""
Источник DS1 в отчете уже есть и именно его надо заполнить.
Подскажите, что я делаю не так?
Спасибо.
Re: Как заполнить DataSet отчета из WindowsForms
День добрый!
Вы всё правильно написали в коде, он рабочий. Вероятно, у вас в отчёте уже есть источник данных с таким же именем, т.к. отчёт вы не показали, то конкретнее сказать не могу.
Набросал примитивный пример и отчёт, который выводит данные, использовал ваш код один в один, см. архив в приложении, а результат на скриншоте.
Вы всё правильно написали в коде, он рабочий. Вероятно, у вас в отчёте уже есть источник данных с таким же именем, т.к. отчёт вы не показали, то конкретнее сказать не могу.
Набросал примитивный пример и отчёт, который выводит данные, использовал ваш код один в один, см. архив в приложении, а результат на скриншоте.
- Вложения
-
- Clipboard01.png (14.42 КБ) 2394 просмотра
-
- StimulTest.7z
- (19.73 КБ) 156 скачиваний