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