Поделиться через


Макрокоманда SearchForRecord

Область применения: Access 2013, Office 2013

Вы можете использовать действие SearchForRecord для поиска определенной записи в таблице, запросе, форме или отчете.

Setting

Аргументы действия SearchForRecord приведены ниже.

Аргумент макрокоманды

Описание

Object Type

Введите или выберите тип объекта базы данных, в который выполняется поиск. Можно выбрать Таблица, Запрос, Форма или Отчет.

Object Name

Введите или выберите конкретный объект, содержащий запись для поиска. В раскрывающемся списке отображаются все объекты базы данных типа, выбранного для аргумента Тип объекта .

Запись

Укажите начальную точку и направление поиска.

Setting

Описание

Previous

Поиск в обратном направлении от текущей записи.

Next

Поиск вперед из текущей записи.

First

Поиск вперед из первой записи. Это значение по умолчанию для этого аргумента.

Last

Выполните поиск в обратном направлении от последней записи.

Условие where

Введите условия для поиска, используя тот же синтаксис, что и предложение WHERE SQL, только без слова WHERE. Пример.

"Description = "Напитки""

Чтобы создать условие, включающее значение из текстового поля в форме, необходимо создать выражение, сцепляющее первую часть условия с именем текстового поля, содержащего значение, для которого выполняется поиск. Например, при выполнении следующего критерия в поле Описание будет выполнен поиск значения в текстовом поле txtDescription в форме с именем frmCategories. Обратите внимание на знак равенства (=) в начале выражения и одинарные кавычки (') по обе стороны ссылки на текстовое поле:

'="Description = ' " " & Forms! [frmCategories]! [txtDescription] & """

Замечания

  • В случаях, когда несколько записей соответствуют критериям в аргументе Where Condition , найденные записи определяют следующие факторы:

    • Параметр аргумента "Запись"Дополнительные сведения о аргументе Record см. в таблице в разделе Параметры.

    • Порядок сортировки записейНапример, если аргумент Record имеет значение First, изменение порядка сортировки записей может изменить найденную запись.

  • Объект, указанный в аргументе Имя объекта , должен быть открыт перед выполнением этого действия. В противном случае возникает ошибка.

  • Если условия в аргументе Where Condition не выполнены, ошибка не возникает и фокус остается на текущей записи.

  • При поиске предыдущей или следующей записи поиск не завершается, когда достигает конца данных. Если нет дополнительных записей, соответствующих условиям, ошибка не возникает и фокус остается на текущей записи. Чтобы убедиться, что совпадение найдено, можно ввести условие для следующего действия и сделать условие таким же, как условие в аргументе Where Condition .

  • Чтобы запустить действие SearchForRecord в модуле VBA, используйте метод SearchForRecord объекта DoCmd .

  • Действие SearchForRecord похоже на действие НайтиЗапись , но ПоискForRecord имеет более мощные функции поиска. Действие НайтиЗапись в основном используется для поиска строк и дублирует функции диалогового окна Поиск . В действии SearchForRecord используются критерии, которые больше похожи на критерии фильтра или SQL-запроса. В следующем списке показаны некоторые действия, которые можно выполнить с помощью действия SearchForRecord :

    • В аргументе Where Condition можно использовать сложные условия, например

      Description = "Beverages" and CategoryID = 11

    • Вы можете ссылаться на поля, которые находятся в источнике записей формы или отчета, но не отображаются в форме или отчете. В предыдущем примере ни Описание, ни CategoryID не должны отображаться в форме или отчете, чтобы условия работали.

    • Можно использовать логические операторы, такие как <, , >AND, OR и BETWEEN. Действие НайтиЗапись соответствует только строкам, которые равны, начинаются с или содержат искомую строку.

Пример

Следующий макрос сначала открывает таблицу Категории с помощью действия OpenTable . Затем макрос использует действие SearchForRecord , чтобы найти первую запись в таблице, где поле Описание равно "Напитки".

Действие

Аргументы

OpenTable

Имя таблицы:Представление категорий: таблицаСреда данных Режим данных: Изменить

SearchForRecord

Тип объекта: TableObject Name: CategoriesRecord: FirstWhere Condition: Description = "Beverages"