Такая вот беда:
БД - Access 2003. К ней подключаемся из VB6:
Вот кусок кода:
- Код: Выделить всё
Public CN As New ADODB.Connection
...
СN.CursorLocation = adUseClient
CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & PT & _
";Persist Security Info=False;Jet OLEDB:Database Password='12345'"
...
В модальной форме несколько раз подряд вызывается из модуля FIND_FIO:
Function FIND_FIO()
Dim rst As New ADODB.Recordset
Dim s$
s = "SELECT ID,GR From TB1 Where UCase(Фамилия)='ИВАНОВ' And UCase(Имя)='ИВАН'" & _
" And UCase(Отчество)='ИВАНОВИЧ'"
rst.Open s, CN, adOpenForwardOnly, adLockReadOnly
s = ""
If rst.RecordCount <> 0 Then
Do While Not rst.EOF
s = s & "Иванов Иван Иванович - " & _
rst!GR & " [Код = " & rst!ID & "]" & vbCrLf
rst.MoveNext
Loop
FIND_FIO = s
If rst.State = adStateOpen Then rst.Close
Set rst = Nothing
End function
Первый раз rst открывается с большой задержкой (~4 сек), затем моментально.
В чем причина первой задержки?
ID и GR - индексированные поля, при этом ID не допускает повторов.
Что я делаю неверно? Почему это происходит?
Заранее благодарю за любую помощь!