Recordset2.FindPrevious method (DAO)
Область применения: Access 2013, Office 2013
Определяет положение предыдущей записи в объекте Recordset типа dynaset или мгновенный снимок, которая отвечает заданным условиям и превращает запись в текущую запись (только для рабочих областей Microsoft Access). .
Синтаксис
expression . FindPrevious(Criteria)
Выражение Переменная, представляющая объект Recordset2 .
Параметры
Имя |
Обязательный/необязательный |
Тип данных |
Описание |
---|---|---|---|
Criteria |
Обязательный |
String |
Строка, используемая для поиска записи. Аналогично предложению WHERE в инструкции SQL, но без слова WHERE. |
Примечания
Если в поиск нужно включить все записи, а не только те, которые удовлетворяют заданному условию, используйте методы Move, чтобы переходить между записями. Для поиска записи в объекте Recordset табличного типа используется метод Seek.
Если соответствующая условиям запись не найдена, то указатель текущей записи неизвестен, а свойству NoMatch присваивается значение True. Если набор записей содержит несколько записей, удовлетворяющих условиям, FindFirst находит первое вхождение, FindNext находит следующее вхождение и т. д.
В приведенной ниже таблице показано, с какого расположения и в каком направлении выполняют поиск разные методы Find.
Метод Find |
Начало поиска |
Направление поиска |
---|---|---|
FindFirst |
Начало набора записей |
Конец набора записей |
FindLast |
Конец набора записей |
Начало набора записей |
FindNext |
Текущая запись |
Конец набора записей |
FindPrevious |
Текущая запись |
Начало набора записей |
Однако использование методов Find отличается от использования метода Move, который просто делает первую, последнюю, следующую или предыдущую запись текущей без указания условия. После операции Find можно выполнить операцию Move.
Всегда проверяйте значение свойства NoMatch, чтобы определить, успешно ли выполнена операция Find. Если поиск выполнен успешно, свойство NoMatch принимает значение False. Если поиск не дал результатов, то свойство NoMatch принимает значение True, а текущая запись не определяется. В этом случае необходимо вернуть указатель текущей записи к допустимой записи.
Использование методов Find с наборами записей, доступ к которым осуществляется через ODBC с подключением к ядру СУБД Microsoft Access, может быть неэффективным. Может оказаться, что изменение условий поиска определенной записи выполняется быстрее, особенно при работе с большими наборами записей.
При работе с базами данных ODBC, подключенными к ядру СУБД Microsoft Access, и большими объектами Recordset типа "Динамический набор" можно обнаружить, что использование методов Find или свойств Sort и Filter выполняется медленно. Чтобы повысить производительность, используйте запросы SQL с настроенными предложениями ORDER BY или WHERE, запросы параметров или объекты QueryDef, возвращающие определенные индексированные записи.
При поиске полей, содержащих даты, следует использовать формат даты, применяемый в США (месяц, день, год), даже если вы не используете версию ядра СУБД Microsoft Access для США. В противном случае данные могут быть не найдены. Используйте функцию Format в Visual Basic для преобразования даты. Например:
rstEmployees.FindFirst "HireDate > #" _
& Format(mydate, 'm-d-yy' ) & "#"
Если условие состоит из строки, объединенной с нецелочисленным значением, а параметры системы содержат десятичные символы, не используемые в США, например запятую (примеры: strSQL = "PRICE > " & lngPrice и lngPrice = 125,50), то при попытке вызова метода возникнет ошибка. Это возникает по причине того, что при объединении число будет преобразовано в строку с помощью используемого по умолчанию в вашей системе десятичного символа, а SQL Microsoft Access поддерживает только десятичные символы, используемые в США.
Примечание.
- Для оптимальной производительности критерии* должны быть в форме "значениеполя = ", где поле является индексируемым полем в базовой базовой таблице, или "префиксlike", где поле является индексируемым полем в базовой базовой таблице, а префикс является строкой поиска префикса (например, "ART*").
- Как правило, для эквивалентных типов поиска метод Seek обеспечивает более высокую производительность, чем метод Find. При этом предполагается, что для ваших потребностей будет достаточно объектов Recordset табличного типа.