Макрокоманда SearchForRecord
Область применения: Access 2013, Office 2013
Вы можете использовать действие SearchForRecord для поиска определенной записи в таблице, запросе, форме или отчете.
Setting
Аргументы действия SearchForRecord приведены ниже.
Аргумент макрокоманды |
Описание |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Object Type |
Введите или выберите тип объекта базы данных, в который выполняется поиск. Можно выбрать Таблица, Запрос, Форма или Отчет. |
||||||||||
Object Name |
Введите или выберите конкретный объект, содержащий запись для поиска. В раскрывающемся списке отображаются все объекты базы данных типа, выбранного для аргумента Тип объекта . |
||||||||||
Запись |
Укажите начальную точку и направление поиска.
|
||||||||||
Условие 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" |