alibek » 25.01.2013 (Пт) 10:29
Seek лучше в том смысле, что это именно поиск с использованием индекса; на неиндексированных полях он недоступен.
В ADO используется Find, если поле не было индексировано по какой-то причине, то движок все-равно будет искать запись (построчно), без выдачи ошибки, что отсутствует индекс. Плюс это или минус — решать разработчику. Но Find в любом случае быстрее, чем самодельный перебор строк через MoveNext. И кстати, при открытии источника данных (таблицы) как TableDirect (этот режим доступен только для Jet-провайдера при открытии таблицы) можно использовать Seek-поиск по индексу.
Однако DAO это технология устаревшая, она нормально работает только на mdb-файлах с провайдером Jet. Если планируется смена СУБД или кроссплатформенность, то DAO не подойдет.
Сама по себе задача "искать" не имеет смысла. Искать можно что-то и где-то. Если нужно искать документы, то лучше использовать Find. Если нужно искать в справочниках (для расшифровки статусов, состояний и т.п.), то возможно есть смысл использовать отвязанный рекордсет с данными из справочников.
Lasciate ogni speranza, voi ch'entrate.