Фильтрация
записей в формах, отчетах, таблицах
Перейдем к
примерам применения макрокоманд Access. Для отбора записей в формах, отчетах,
таблицах используется макрокоманда Приме нить Фильтр (ApplyFilter). Задать фильтр
можно двумя способами: либо указав имя заранее созданного фильтра в аргументе
Имя фильтра
(Filter Name), либо непосредственно задав условие выборки
в аргументе
Условие отбора
(Where Condition). Если фильтр нужно применить
сразу при открытии формы, тогда с событием
Открытие
(On Open) формы необходимо
связать макрос, содержащий макрокоманду ПрименитьФильтр (ApplyFilter). Если
нужно менять набор отображаемых записей в открытой форме динамически, поступают
следующим образом:
Пример такого
решения приведен на рис. 11.15. На этом рисунке представлена форма "Товары"
(Products), позволяющая просматривать товары с выборкой по различным критериям.
Эта форма
построена на основе таблицы "Товары" (Products) с помощью Мастера
автоматической генерации ленточных форм. Затем в режиме Конструктора форм к
ней добавлены поля для определения критериев выбора и кнопки для применения
и отмены фильтра. Соответствующие макросы, связанные с событием
Нажатие,
кнопки
(On Click), приведены на рис. 11.16. Для отмены фильтра используется
макрокоманда ПоказатьВсеЗаписи(ShowAllRecords).
Рис. 11.15.
Форма для отбора записей по заданным критериям
Рис. 11.16.
Макросы для установки и отмены фильтра в форме "Товары"
На рис. 11.16
представлено два макроса: УстановитьФильтр и Отменить Фильтр. В диалоговом окне
Область ввода
(Zoom) отображено значение аргумента
Условие отбора
(Where Condition) макрокоманды ПрименитьФильтр (ApplyFilter). Обратите внимание,
условие получилось довольно сложным, а длина поля
Условие отбора
(Where
Condition) ограничена 255 символами. Поэтому, если бы мы включили в условия
отбора еще одно поле, например "Поставки прекращены", нам пришлось
бы отдельно создать специальный фильтр и задать его имя в аргументе
Имя фильтра
(Filter Name).
В макросе "ОтменитьФильтр", кроме макрокоманды ПоказатьВсеЗаписи(ShowAllRecords), нужны еще две макрокоманды, чтобы очистить поля " ВыборПоставщика" и "ВыборТипа", т. е. присвоить им значение Пусто (Null). Это делается с помощью макрокоманды ЗадатьЗначение(SetValue).