Страница 1 из 1
Программная загрузка данных в Sql DataSource
Добавлено: 24 фев 2012, 16:42
Serpentariy
Здравствуйте!
Источниками данных для отчёта являются хранимые процедуры Sql Server. Свойство ConnectOnStart источников данных установлено в false.
Результатом работы нижеприведённого кода в версии Reports.Net 2010.1 было отбражение отчёта с нужными данными:
Код: Выделить всё
StiReport rpt = new StiReport();
rpt.Load("Report.mrt");
rpt.Compile();
rpt.Show();
В версии Reports.Net 2011.3 этот код выдаёт пустую страницу. Судя по профайлеру, не происходит выполнение хранимых процедур являющихся источниками данных.
Подскажите, как это исправить?
Программная загрузка данных в Sql DataSource
Добавлено: 27 фев 2012, 06:53
Aleksey
Здравствуйте,
Если свойство ConnectOnStart установлено в false, то в коде отчета необходимо самому выполнять следующий код:
DataSourceName.Connect()
Иначе не будет происходить подключение и не будут получаться данные.
Спасибо.
Программная загрузка данных в Sql DataSource
Добавлено: 27 фев 2012, 07:57
Serpentariy
Меня интересует возможность выполнения кода: DataSourceName.Connect() не в коде отчёта, а в коде приложения вызывающего отчёт на построение.
Программная загрузка данных в Sql DataSource
Добавлено: 27 фев 2012, 09:58
Serpentariy
Добавил в дизайнере отчётов на событие Report.BeginRender код: DataSourceName.Connect(). При просмотре отчёта из дизайнера выполняется получение данных с сервера и формируется отчёт. Запуск отчёта на выполнение программно не даёт никаких результатов. Выходит пустая страница. Что я делаю не так?
До и после DataSourceName.Connect() вставил System.Windows.Forms.MessageBox.Show("Тест"). При программном запуске отчёта 2 раза выходят сообщения со
словом "Тест", а отчёт по прежнему выходит пустой. Почему не происходит соединение с данными?
Программная загрузка данных в Sql DataSource
Добавлено: 28 фев 2012, 12:21
Aleksey
Здравствуйте,
Пожалуйста, попробуйте использовать следующий код:
Код: Выделить всё
report.Load();
report.Compile();
report.CompiledReport.Pages[0].BeforePrint += new EventHandler(Form1_BeforePrint);
report.Render();
report.Show();
...
void Form1_BeforePrint(object sender, EventArgs e)
{
((StiPage)sender).Report.Dictionary.DataSources["Categories"].Connect();
}
Спасибо.
Программная загрузка данных в Sql DataSource
Добавлено: 29 фев 2012, 03:52
Serpentariy
Спасибо. Данный код работает.
Программная загрузка данных в Sql DataSource
Добавлено: 29 фев 2012, 03:57
Andrew
Здравствуйте,
Отлично. Всегда рады помочь.
Спасибо.