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

 

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

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

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

ник: Pasat
Спасибо VIK
Рассказываю
Создал ф-цию

Function strAllParenstID(ThisID As Long) As String
Dim dbs As Database
Dim rst As Recordset

strAllParenstID = ""
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Departments", dbOpenDynaset)
StartFind:
rst.FindFirst "DepID = " & ThisID
If rst.NoMatch = False Then
    ThisID = rst!ParentID
    strAllParenstID = strAllParenstID & "." & ThisID
    GoTo StartFind
End If
rst.Close
End Function

Создал запрос
SELECT q.DepID, w.DepID
FROM Departments AS q, Departments AS w
WHERE (((InStr("." & [q].[ParentID] & strAllParenstID([q].[parentid]) & ".","." & [w].[depid] & "."))>0))
ORDER BY q.DepID, w.DepID DESC;

В результате выплняется медленнее чем при использывании Dlookup
А именно нужный запрос (673 записи) на осн.таблица из 100 записей отрывается 42 сек., а при использывании Dlookup – 33 сек. (см.аттач.)

Вообще то обе ф-ии не тормозят, т.е быстро формируют строку состоящую из «ид» предков
Тормозит выше указанный запрс

Поэтому вопрос в следующем
Как построить более быстрый запрос

Зы KrukVN – пока не успел разобраться с тем что Вы написали


Ваше имя:

Пароль:

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

Сообщение:

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

Прикрепить:

 

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