Michel Walsh
Как известно, метод Seek позволяет кардинально быстрее найти запись по проиндексированному полю по сравнению c методами FindFirst, FindNext, но не работает по присоединенным таблицам...
Если открыть рекордсет напрямую на основе прилинкованной таблицы, то он не будет поддерживать метод Seek - поиск с использованием индекса (Речь идет о DAO.Recordset). Однако, если открыть напрямую базу данных, в которой эта таблица находится, и уже из неё открыть рекордсет - то всё получится.
Могу ли выполнить Seek и Index на присоединенных таблицах ?
Напрямую нет. Но вы можете использовать следующую функцию для того, чтобы это стало возможным
'************ Code Start ***************
'This code was originally written by Michel Walsh.
'It is not to be altered or distributed,
'except as part of an application.
'You are free to use it in any application,
'provided the copyright notice is left unchanged.
'Code Courtesy of
'Michel Walsh
Public Function OpenForSeek(TableName As String) As Recordset
' Assume MS-ACCESS table
Set OpenForSeek = DBEngine.Workspaces(0).OpenDatabase _
(Mid(CurrentDb().TableDefs(TableName).Connect, _
11), False, False, "").OpenRecordset(TableName, _
dbOpenTable)
End Function
'************ Code End ***************
'Использовать так:
Dim rst as Recordset
set rst=OpenForSeek("TableName")
и вы можете использовать rst.Seek и rst.Index на присоединенной таблице TableName
Ссылки по теме