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

demav

Турист
Есть такая проблема.
В 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. знаю, что запрос можно перенести в хранимую процедуру. Но не хочется - так для каждого отчета придется делать свою ХП.
 
Last edited by a moderator:

Ognev

Premium
Premium
А откуда уверенность, что FastReport поддерживает в запросах DECLARE и вложенный CASE, то есть, что через ADO они правильно передаются на сервер?
 

demav

Турист
А откуда уверенность, что FastReport поддерживает в запросах DECLARE и вложенный CASE, то есть, что через ADO они правильно передаются на сервер?
Уверенности, конечно, нет :)
Но обычный TADOQuery вполне нормально справляется с таким запросом.

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

chekhlov

Турист
FastReport нормально обрабатывает такие запросы

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

Freeon

Турист
А причем тут фастрепорт
Он не препроцессор запросов. Максимум что он может сделать так пробиндить значения а какой запрос ему абсолютно параллельно!
Смотрите в сторону того что у Вас работает с БД и какие настроички
 
Top