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


Применение фильтра при открытии формы или отчета

Если вы используете код Visual Basic для приложений (VBA), чтобы открыть форму или отчет, рекомендуется указать, какие записи нужно отобразить. Записи для отображения в форме или отчете можно указать несколькими способами. Распространенный способ — отобразить настраиваемое диалоговое окно, в котором пользователь вводит условия для базового запроса формы или отчета. Чтобы получить условия, нужно добавить ссылку на элементы управления в диалоговом окне. В разделах ниже описаны три способа использования введенных условий в настраиваемом диалоговом окне для фильтрации записей.

Использование аргумента wherecondition

Аргумент wherecondition метода или действия OpenForm или OpenReport является самым простым способом получения критериев в ситуациях, когда пользователь предоставляет только одно значение. Например, можно отобразить форму, предлагающую пользователю выбрать код заказа для счет-фактуры, которую нужно напечатать. Если вы используете процедуру обработки событий, можно применить фильтр, отображающий только одну запись, добавив аргумент в метод OpenReport, как показано в строке кода ниже:

DoCmd.OpenReport "Invoice", acViewPreview, , "OrderID = " & OrderID 

Объект "OrderID = " в выражении фильтра ссылается на поле OrderID в базовом запросе отчета о счете. OrderID в правой стороне выражения указывает на значение, выбранное пользователем из списка OrderID в диалоговом окне. Выражение объединяет эти два значения, что приводит к добавлению в отчет только счет-фактуры для записи, выбранной пользователем.

Аргумент wherecondition применяется только процедурой события, указанной для события OnClick кнопки, которая запускает метод OpenForm или OpenReport . Это обеспечивает гибкость использования любого количества разных диалоговых окон для открытия одной формы или отчета и применения различных наборов условий в зависимости от нужных действий. Например, пользователю может потребоваться напечатать счет-фактуру для определенного клиента или просмотреть заказы только для определенного продукта.

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

Использование запроса в качестве фильтра

Отдельный запрос, иногда называемый запросом с фильтром, может ссылаться на элементы управления в диалоговом окне, чтобы получить его условия. Используя этот подход, вы фильтруете записи в форме или отчете, задав для аргумента filtername метода или действия OpenForm или OpenReport имя создаваемого запроса фильтра. Запрос с фильтром должен содержать все таблицы в источнике записей формы или отчета, который вы открываете. Кроме того, запрос с фильтром должен содержать все поля в открываемой форме или отчете, либо необходимо присвоить его свойству OutputAllFields значение Yes.

После создания и сохранения запроса для использования в качестве фильтра задайте для аргумента filtername метода или действия OpenReport имя запроса фильтра. Аргумент filtername применяет указанный запрос с фильтром каждый раз, когда запускается метод OpenReport.

Использование запроса в качестве фильтра для задания условий имеет преимущества, аналогичные использованию аргумента wherecondition метода OpenForm или OpenReport . Запрос с фильтром обеспечивает такую же гибкость использования нескольких диалоговых окон для открытия одной формы или отчета и применения различных наборов условий в зависимости от нужных действий.

Прямая ссылка на элементы управления диалогового окна в базовом запросе формы или отчета

Также можно ссылаться на элементы управления диалогового окна непосредственно в базовом запросе формы или отчета, а не через аргументы метода OpenForm или OpenReport. При использовании этого подхода методу или команде OpenForm или OpenReport не требуется аргумент wherecondition или filtername. Вместо этого при каждом открытии формы или отчета его базовый запрос ищет диалоговое окно, чтобы получить его условия. Тем не менее, если пользователь открывает форму или отчет в окне базы данных, а не через диалоговое окно, Access отображает окно параметра, запрашивающее у пользователя значение диалогового окна.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.