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

 

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

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

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

ник: kot_k_k
Разобрался:
Взял пример Номенклатура (8000 записей) и Склад (26000 записей)
Сделал 4 вида переборки

Set op = dbs.OpenRecordset("select * from naimen order by kod_n")
Set Skl = dbs.OpenRecordset("select * from sklad order by naimen")
op.MoveLast
op.MoveFirst
Kol_ = op.RecordCount

For i = 1 To Kol_

1-й

Skl.FindFirst ("naimen=" & op!Kod_N)
Do While Skl.NoMatch = False
kol_0 = kol_0 + 1
Skl.FindNext ("naimen=" & op!Kod_N)
Loop

2-й

If Skl.EOF = False Then
Do While Skl.EOF = False
Do While Skl!Naimen = op!Kod_N
kol_0 = kol_0 + 1
Loop
Skl.MoveNext
Loop
End If

3-й

Set Skl = dbs.OpenRecordset("select * from sklad where naimen=" & op!Kod_N)
Do While Skl.EOF = False
kol_0 = kol_0 + 1
Skl.MoveNext
Loop

op.MoveNext
Next

и 4-й - использование SHAPE

Получил:

вар 1 - 11-12 секунд Findfist, FindNext
вар 2 - 1 секунда логика проверок
вар 3 - 8 секунд OpenRecordset с Where
вар 4 - 1 секунда Shape

Так что есть большое укорение и отсутствует головняк с логикой как во 2-м варианте.
Хотя от Shape тоже требует каждый раз

Set rsOrdDet = rsOrd.Fields("sklad").Value

у него получается мгновенно.
Я думал у Shape есть автоматический переход в подчиненной записи при перемещении на новую в Главной, но
Set rsOrdDet = rsOrd.Fields("sklad").Value
тоже не плохо и быстро!!!


Ваше имя:

Пароль:

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

Сообщение:

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

Прикрепить:

 

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