Выполнение запросов при построении до заполнения параметров

Обсуждение Stimulsoft Reports.NET
Ответить
Аватара пользователя
t0pdevice
Сообщения: 107
Зарегистрирован: 15 авг 2016, 09:59

Выполнение запросов при построении до заполнения параметров

Сообщение t0pdevice »

Добрый день!
Методом анализа было выявлено, что при построении отчёта он зачем-то выполняет запрос к базе до отображения формы. В самом запросе используется значения DateTimePicker. Сначала выполняется запрос со стандартными значениями DateTimePicker, затем после того, как появляется форма и пользователь указывает, к примеру, период и нажимает ОК, запрос снова выполняется уже с указанными датами.
Если запросы сложные, то это влияет на время отображения формы пользователю.

Это так и должно быть? И есть ли настройка для отключения этого?
Jan
Сообщения: 495
Зарегистрирован: 19 фев 2009, 11:14

Re: Выполнение запросов при построении до заполнения парамет

Сообщение Jan »

Здравствуйте.

В данном случае можно поступить так:

1. Выделите источник данных с параметром в словаре данных и из контекстного меню вызовите Properties;
2. Установите свойство ConnectOnStart в false;
3. В событии OnClick кнопки напишите код:

Код: Выделить всё

DataSource1.Connect();
Дайте знать если будут дополнительные вопросы!

Спасибо.
Вложения
3.png
3.png (18.63 КБ) 3220 просмотров
2.png
2.png (8.93 КБ) 3220 просмотров
1.png
1.png (15.95 КБ) 3220 просмотров
Аватара пользователя
t0pdevice
Сообщения: 107
Зарегистрирован: 15 авг 2016, 09:59

Re: Выполнение запросов при построении до заполнения парамет

Сообщение t0pdevice »

Возвращаюсь к этому вопросу.

На DataSource - data стоит ConnectOnStart = false, при нажатии на форме "Формировать" делается data.Connect(), но данные на странице не отображаются. При ConnectOnStart = true все отрабатывает корректно.
Отчёт во вложении, используется БД PostgreSQL 9.5 и pgBouncer.
Вложения
Report.mrt
(6.51 КБ) 441 скачивание
Aleksey
Сообщения: 2906
Зарегистрирован: 22 апр 2010, 06:57

Re: Выполнение запросов при построении до заполнения парамет

Сообщение Aleksey »

Здравствуйте,

В данном случае, перед вызовом метода Connect, необходимо задать ConnectOnStart:
data.ConnectOnStart = true;
data.Connect();

Спасибо.
Ответить