сложный запрос SQL Server в FastReport 4

demav

Местный
Регистрация
20 Ноя 2008
Сообщения
97
Реакции
13
Credits
158
Есть такая проблема.
В FastReport 4 в компоненте TfrxADOQuery прописываю "сложный" запрос SQL Server типа такого (это пример конструкции, а не сам запрос):

DECLARE @ID INT
SET @ID = :id

SELECT
CASE WHEN 1 THEN 1
ELSE
CASE WHEN @ID = 2 THEN 2 ELSE 3 END
END

Сам запрос работает правильно - проверял в Enterprise Manager.
Но в FR не работает - в датасете пустой перечень полей. Когда убираю case (второй - вложенный) и DECLARE, то работает.

Вопрос - как можно в TfrxADOQuery выполнить такой "сложный" запрос?

P.S. знаю, что запрос можно перенести в хранимую процедуру. Но не хочется - так для каждого отчета придется делать свою ХП.
 
Последнее редактирование модератором:

Ognev

ex-Team DUMPz
Местный
Регистрация
20 Авг 2004
Сообщения
2,079
Реакции
908
Credits
0
А откуда уверенность, что FastReport поддерживает в запросах DECLARE и вложенный CASE, то есть, что через ADO они правильно передаются на сервер?
 

demav

Местный
Регистрация
20 Ноя 2008
Сообщения
97
Реакции
13
Credits
158
А откуда уверенность, что FastReport поддерживает в запросах DECLARE и вложенный CASE, то есть, что через ADO они правильно передаются на сервер?

Уверенности, конечно, нет :)
Но обычный TADOQuery вполне нормально справляется с таким запросом.

Кстати, на заметку, если в запросе FastReport убрать вложенный CASE, то запрос работает.
 

chekhlov

Турист
Регистрация
23 Мар 2010
Сообщения
4
Реакции
1
Credits
8
FastReport нормально обрабатывает такие запросы

Добавлено через 55 секунд
Наверное проще было бы воспользоваться SQL Profiler и посмотреть что передается в SQL
 
Последнее редактирование модератором:

Freeon

Местный
Регистрация
13 Фев 2009
Сообщения
5
Реакции
7
Credits
10
А причем тут фастрепорт
Он не препроцессор запросов. Максимум что он может сделать так пробиндить значения а какой запрос ему абсолютно параллельно!
Смотрите в сторону того что у Вас работает с БД и какие настроички