- Код: Выделить всё
 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 коннекшн глобальный объект, в аксесе -- локальный.
В чем может быть причина? И, главное, как исправить ситуацию?








 
 
 Другого объяснения пока в голову не приходит.
    Другого объяснения пока в голову не приходит.

 Копался в MSDN насчет ADOX, создал новую ф-ию линковки таблицы через ADOX (чтоб исключить негативное влияние DAO):
  Копался в MSDN насчет ADOX, создал новую ф-ию линковки таблицы через ADOX (чтоб исключить негативное влияние DAO):
