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

 

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

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

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

ник: Vik
Думаю, основная проблема по скорости - обработка строк в условиях запроса и
двойное открывание одной и той-же таблицы.

Еще один вариант:



Function HaveThisParenstID(ThisID As Long, ThisParent as Long) As Boolean
Dim rst As DAO.Recordset
HaveThisParenstID = False
    Set rst = Workspaces(0).Databases(0).OpenRecordset("Departments", dbOpenSnapshot)
    StartFind:
    rst.FindFirst "DepID = " & ThisID
    If rst.NoMatch = False Then
        ThisID = rst!ParentID
             If ThisID  = ThisParent  Then
                     HaveThisParenstID = True
                     GoTo EndFunction
             EndIf
        GoTo StartFind
    End If
EndFunction:
rst.Close
Set rst = Nothing
End Function 



Еще - сделайте Parent-поле индексированным.

Возможны ошибки, писал в броузере, но суть должна быть понятна.

После запросом выбираете все записи, для коих результат этой функции = True

Там еще раньше было предложение заполнять через функцию временную таблицу.


Ваше имя:

Пароль:

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

Сообщение:

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

Прикрепить:

 

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