Формирование строки запроса источника данных из отчета

Обсуждение Stimulsoft Reports.NET
Ответить
BeraleX
Сообщения: 114
Зарегистрирован: 17 авг 2006, 09:39

Формирование строки запроса источника данных из отчета

Сообщение BeraleX »

Возникла следующая проблема:
в процессе отображения отчета высвечивается форма, в которой необходимо выбрать несколько пунктов.
В соответствии с выбранными пунктами необходимо сгенерировать запрос в БД, при этом запрос является объединением (UNION) результатов нескольких запроосов, при этом количество подзапросов варьируется в зависимости от выбора пунктов пользователем.
Для решения задачи был создан источник данных с одним подзапросом. На основе его полей построен отчет.
Теперь необходимо перед построением страницы отчета менять текст sql-запроса в источнике данных из кода запроса в соответствии.
Возможно ли это делать динамически?
П.С. Нашел свойство SqlCommand у источника данных, пытаюсь менять его на событие BeginRender, но по моему при его изменении ничего не меняется.
параметры использовать нельзя. потому как заранее неизвестно. сколько пунктов выберет пользователь, а соответственно неизвестно сколько подзапросов, объединенных Union, необходимо будет сгенерировать.
Спасибо.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Формирование строки запроса источника данных из отчета

Сообщение Edward »

BeraleX писал(а):Возникла следующая проблема:
в процессе отображения отчета высвечивается форма, в которой необходимо выбрать несколько пунктов.
В соответствии с выбранными пунктами необходимо сгенерировать запрос в БД, при этом запрос является объединением (UNION) результатов нескольких запроосов, при этом количество подзапросов варьируется в зависимости от выбора пунктов пользователем.
Для решения задачи был создан источник данных с одним подзапросом. На основе его полей построен отчет.
Теперь необходимо перед построением страницы отчета менять текст sql-запроса в источнике данных из кода запроса в соответствии.
Возможно ли это делать динамически?
П.С. Нашел свойство SqlCommand у источника данных, пытаюсь менять его на событие BeginRender, но по моему при его изменении ничего не меняется.
параметры использовать нельзя. потому как заранее неизвестно. сколько пунктов выберет пользователь, а соответственно неизвестно сколько подзапросов, объединенных Union, необходимо будет сгенерировать.
Спасибо.
Вы можете добавить в тело запроса переменную, содержащую подзапрос, например:

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

select ....
...
union
{Variable1} 
Для DataSource в отчете установите свойство ConnectOnStart = false
Инициализируйте переменную, а затем вызывайте метод DataSource.Connect()

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