Access 2002

Как работает класс IncrementalSearch


Когда определены значения всех свойств элементов управления, с которыми работает класс IncrementalSearch, можно перейти к делу. После того как вы установите значение для свойства ListBox, класс откроет набор записей (используя средства доступа ADO или DAO, что зависит от значения константы времени компиляции USEDA0), где будет искать данные, вводимые пользователем в текстовое поле. Процедура SetupRstADO (или SetupRstDAO, если используется DAO) считывает значение свойства списка RowSource, то есть имя таблицы, запроса или SQL-строки, которые программа Access использует для заполнения списка, и открывает соответствующий набор записей. Какие бы объекты вы ни применяли, ADO или DAO, поиск производится быстрее, если поле, где он выполняется, индексировано. Процедура SetupRstADO (или SetupRstDAO) пытается открыть набор записей, в котором может осуществляться индексный поиск (с помощью метода Seek). Если ей это не удается (например, потому что в свойстве RowSource указано имя запроса), она открывает обычный набор записей, в котором индекс может и не употребляться. (В DAO это набор записей типа dynaset, а в ADO у него нет отдельного названия.) В этом случае для поиска данных код ADO использует свойство Filter объекта Recordset, позволяющее найти первую строку, значение которой больше или равно тому, что введено в текстовое поле. Код DAO использует метод FindFirst. В любом случае не стоит пренебрегать возможностью применять для поиска индекс (если таковая имеется), так как это ускоряет данный процесс.

Если вас интересует тернистый путь создания набора записей посредством класса IncrementalSearch, изучите процедуры SetupRstADO и SetupRstDAO в его модуле. Они достаточно большие и сложные, но зато мы постарались сделать их максимально гибкими.

Комментарии закрыты