Рекурсия в Tfrxodbcquery

отредактировано June 2014 Раздел: FastReport 4.0
Приветствую.
Может кто сталкивался с ошибкой возникающей в процессе выполнения запроса.
; with Q as
(
select ...
from 
)

, CTE (<fields>) AS
(
	SELECT ...
	FROM Q
	
	UNION ALL
	
	SELECT ...
	FROM Q AS D
		JOIN CTE C ON C.ID = D.PAR
	where C.ID <> 0
)

SELECT  <fields>
FROM CTE
ORDER BY ...

Комментарии

  • Stalker4Stalker4 123
    отредактировано 16:31
    humanity написал: »
    Приветствую.
    Может кто сталкивался с ошибкой возникающей в процессе выполнения запроса.
    А причем тут FR ? Судя по ошибке, это ошибка на SQL-сервере.
  • отредактировано 16:31
    Stalker4 написал: »
    А причем тут FR ? Судя по ошибке, это ошибка на SQL-сервере.
    Ошибки в коде нет. Т.к. в Management Studio работает.
    Ну ок. Перепишем вопрос.
    Как в FR воспользоваться рекурсией основанной на наборах данных. Рекурсивные CTE ?

    p.s. FastReport 5.0.4 та же ошибка.
  • отредактировано 16:31
    судя по всему, рекурсия тут не причем.
    А дело в использовании common table expressions(CTE).
    Вопрос: как использовать CTE в Tfrxodbcquery ?
  • PNPPNP
    отредактировано 16:31
    Может быть в настройках подключения что-то не так? Клиентская либа, например, не той версии.
    Ну и решить можно закатав СТЕ в хп, и в отчете дерагть уже ее
  • отредактировано 16:31
    PNP написал: »
    Может быть в настройках подключения что-то не так? Клиентская либа, например, не той версии.
    По этому поводу ничего сказать не могу, т.к. в настройке не имею отношения.
    Используется драйвер ODBC.
    PNP написал: »
    Ну и решить можно закатав СТЕ в хп, и в отчете дерагть уже ее
    Да, но это повлечет за собой создание объекта базы данных, что в данном случае неудобное решение.
    Можно еще использовать pascal script, что бы работать с данными на уровне строк, тоже неудобное решение.

    Очень хочется заставить работать CTE и выполнять часть работы с данными на сервере.
  • Stalker4Stalker4 123
    отредактировано 16:31
    humanity написал: »
    Ошибки в коде нет. Т.к. в Management Studio работает.
    Это не аргумент, так как неизвестно посредством чего и каких настроек Management Studio работает с SQL-сервером. Попробуйте этот свой запрос выполнить в самой Delphi в через TADOQuery или TQuery или чем Вы там из Delphi ходите к своему SQL-серверу.
  • отредактировано 16:31
    Stalker4 написал: »
    Это не аргумент, так как неизвестно посредством чего и каких настроек Management Studio работает с SQL-сервером. Попробуйте этот свой запрос выполнить в самой Delphi в через TADOQuery или TQuery или чем Вы там из Delphi ходите к своему SQL-серверу.
    Это говорит о том что сервер обрабатывает запрос корректно и что он составлен правильно.
    Дело в том, что FR встроен в ПО и хожу к SQL-серверу посредством подключения которое установило ПО.
    Использовать могу только Tfrxodbcquery.
    Да, рекурсия не играет никакой роли. Любой запрос CTE вызывает туже ошибку.
    ИМХО, "в чем дело?" может ответить только разработчик.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.