Как выполнить метод Seek на присоединенных таблицах

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

 


Страница сайта http://185.71.96.61
Оригинал находится по адресу http://185.71.96.61/home.asp?artId=7328