Рекурсивная ф-я Access для вывода полного пути по названию

f50
Дата: 09.02.2016 10:38:03
Коллеги, поиском искал, нужного не заметил, а может пропустил, прошу помочь, есть ф-я для MSSQL, работает на ура, как надо, надо такую же на Access, наверняка есть она в природе, приведите тут её.

И второй вопрос, как её оформить в Access, сохранить как запрос, а как параметры передать?

CREATE function [dbo].[ShowFullPathName](@id int) returns nvarchar(2000)
as
begin
 declare 
  @ret nvarchar(200),
  @rtid int
  select @ret=GoodName, @rtid=IdParentGood from dbo.Good where GoodRowid=@id
  if @rtid <> 0
   SET @ret=dbo.ShowFullPathName(@rtid)+' > '+@ret
 Return @ret
end


Заранее благодарю!
Akina
Дата: 09.02.2016 11:01:30
Access не обрадуется рекурсивному запросу.
Реализуйте то же на VBA.
MrShin
Дата: 09.02.2016 11:08:16
Функция легко реализуется на VBA с использованием Recordset.

Не совсем понятен второй вопрос: зачем функцию сохранять как запрос? Созданную VBA функцию можно использовать в любом другом запросе (кроме Pass-Trough только)
f50
Дата: 09.02.2016 11:14:15
Да я из Delphi через ADOQuery юзаю результат выборки, вот в чём самая сложность...
В крайнем случае конечно могу средствами Delphi написать ф-ю, на клиенте все и сделаю, но вот с MSSQL очень удобно, так же на Access хотелось.
Akina
Дата: 09.02.2016 11:37:36
Если данные тоже хранятся в Access - попробуйте подумать, а не целесообразно ли пойти на переопределение данных и хранить в таблице полный путь в дополнительном поле. Плюс, само собой, процедура валидации/пересчёта этого поля при несогласованных или пакетных изменениях данных.
MrShin
Дата: 09.02.2016 11:56:47
В Акцессе нет хранимых процедур, так что аналог не получится сделать. Либо на клиенте считать, либо хранить в таблице. Также перечень доступных функций в SQL, которые не требуют подключения библиотек очень небольшой, ничего сложного не сделаешь.
dreindeimos
Дата: 09.02.2016 12:52:52
Функция легко реализуется на VBA с использованием Recordset.
f50
Дата: 13.10.2016 19:37:41
Akina
Если данные тоже хранятся в Access - попробуйте подумать, а не целесообразно ли пойти на переопределение данных и хранить в таблице полный путь в дополнительном поле. Плюс, само собой, процедура валидации/пересчёта этого поля при несогласованных или пакетных изменениях данных.

Вот это то что надо! Пришел к этому решению! Спасибо Akina!