ник: Vik
Реализовано через временную таблицу
Перед запуском не забывайте ее очищать.
Запрос также возвращает кол-во предков.
Function InsetrParentsInTMP(ThisID As Long) As Long
Dim rst As DAO.Recordset
Dim strSQL_Insert As String
Dim CurID As Long
InsetrParentsInTMP = 0
CurID = ThisID
Set rst = CurrentDb.OpenRecordset("qw_ForTMP")
StartFind:
rst.FindFirst "DepID = " & CurID
If rst.NoMatch = False Then
CurID = rst!ParentID
strSQL_Insert = "INSERT INTO tblTMP ( DepIDTMP, ParentIDTMP ) VALUES ( " & ThisID & ", " & CurID & ");"
DoCmd.SetWarnings False
CurrentDb.Execute strSQL_Insert
DoCmd.SetWarnings True
InsetrParentsInTMP = InsetrParentsInTMP + 1
GoTo StartFind
End If
rst.Close
Set rst = Nothing
End Function
|
Смотрите присоединенній файл.
Возможно, нету необходимости в SetWarnings/
Записи с "нулевым" предком исключаються так
If rst.NoMatch = False AND rst!ParentID<>0 Then
|
На всякий случай проверьте корректность работы