Страница 1 из 1

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

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

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

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

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

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

Спасибо.