Применение макросов
Ссылки на подчиненные формы и отчеты
На подчиненную форму или отчет можно ссылаться так же, как и на любой другой элемент управления, т. к. подчиненная форма и подчиненный отчет являются одним из типов элементов управления. Например:
Forms!Заказы!ПодформаТовары
Здесь ПодформаТовары – это имя элемента управления в форме "Заказы", который представляет собой подчиненную форму.
А вот ссылка на элемент управления в подчиненной форме или отчете имеет особую структуру: после имени элемента управления, который является подчиненной формой, нужно сначала указать специальное свойство: Form – для форм или Report – для отчетов, а затем имя элемента управления, на который выполняется ссылка:
Forms!Заказы!ТоварыПодформа.Form![Код Товара]
Фильтрация записей в формах, отчетах, таблицах
Перейдем к примерам применения макрокоманд Access. Для отбора записей в формах, отчетах, таблицах используется макрокоманда ПрименитьФильтр (ApplyFilter). Задать фильтр можно двумя способами: либо указав имя заранее созданного фильтра в аргументе Имя фильтра (Filter Name), либо непосредственно задав условие выборки в аргументе Условие отбора (Where Condition). Если фильтр нужно применить сразу при открытии формы, тогда с событием Открытие (On Open) формы необходимо связать макрос, содержащий макрокоманду ПрименитьФильтр (ApplyFilter). Если нужно менять набор отображаемых записей в открытой форме динамически, поступают следующим образом:
- создают в этой форме набор полей, в которых можно задать условия отбора;
- создают кнопку Применить фильтр, с которой связывают макрос, содержащий макрокоманду ПрименитьФильтр (ApplyFilter). В качестве значения аргумента Условие отбора (Where Condition) для этой макрокоманды указывают выражение, содержащее ссылки на эти поля.
Пример такого решения приведен на рис. 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).