Страница 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
Здравствуйте,

Отлично. Всегда рады помочь.

Спасибо.