- Код: Выделить всё
SQL = "select * from atech"
Set rs = New ADODB.Recordset
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
rs.Open SQL, cn
Do While Not rs.EOF
s = rs.Fields("item").Value
rs.Fields("codenorm").Value = MyFunc(s)
rs.Update
rs.MoveNext
Loop
имеет катастрофически разную скорость выполнения при подключении к базе из VB и непосредственно из VBA в Access'e.
А именно: в VB 100 записей обрабатывает 1 мин., в Access'e 200 тыс. записей -- за 50 сек!!!

Вся разница заключается в способе подключения. В VB я подключаюсь так:
- Код: Выделить всё
sCnDb = "Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=" & sPth & ";Uid=Admin;Pwd=" & sPWD & ";"
Set Cn = New ADODB.Connection
Cn.CommandTimeout = 300
Cn.ConnectionTimeout = 300
Cn.CursorLocation = adUseClient
Cn.Open sCnDb
В Access'e:
- Код: Выделить всё
Set cn = Application.CurrentProject.Connection
Да и еще в VB коннекшн глобальный объект, в аксесе -- локальный.
В чем может быть причина? И, главное, как исправить ситуацию?