Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: 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

На всякий случай проверьте корректность работы


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.