Создание групп макросов

При разработке приложения с использованием макросов количество макросов может оказаться очень большим. Поэтому важно хорошо организовать доступ к нужным макросам. Для этого в одном объекте Макрос (Macro) можно объединить несколько макросов. Например, рекомендуется все макросы, связанные с событиями в форме или отчете, объединить в отдельный объект, соответствующий данной форме или отчету. Для того чтобы можно было это сделать, каждый макрос группы должен иметь свое имя, а имя объекта Макрос (Macro) будет являться именем группы макросов.
Чтобы создать группу макросов:

  1. Откройте Конструктор макросов одним из тех способов, которые были описаны в предыдущем разделе.
  2. Нажмите кнопку Имена макросов (Macro Name) на панели инструментов. На панели описаний в окне Конструктора появится еще один столбец — "Имя макроса" (Macro Name).
  3. В этот столбец введите имя первого макроса. Остальные поля данной строки лучше оставить пустыми — это облегчит перемещение и копирование макрокоманд.
  4. Начиная со следующей строки, введите все макрокоманды макроса и соответствующие аргументы для каждой макрокоманды.
  5. Пропустите одну строку.
  6. Повторите шаги 3—5 для каждого макроса.

На в окне Конструктора представлен макрос "Сотрудники" (Employees) базы данных (Northwind). Для указания конца макроса не требуется отдельной макрокоманды. Access продолжает выполнение макроса, входящего в группу, пока не обнаружит строку, содержащую имя в столбце "Имя макроса" (Macro Name), либо пока не дойдет до последней строки окна макросов.
При обработке макроса пустые строки игнорируются, поэтому их удобно использовать для разделения макросов в группе. Этот прием, а также ввод комментариев для сложных макросов, состоящих из большого числа макрокоманд, позволяет улучшить читаемость макросов.
Для запуска одного из макросов группы используется полное имя для ссылки на макрос. Полное имя макроса формируется таким образом: имяГруппы.имяМакроса.
Замечание
Можно настроить систему так, чтобы столбец Имя макроса (Macro Name) выводился всегда в Конструкторе макросов. Для этого необходимо установить соответствующие параметры на вкладке Вид (View) в диалоговом окне Параметры (Options).
 
Применение условий в макросах
В примерах макросов, которые мы приводили раньше, использовался последовательный порядок выполнения макрокоманд. Однако, как и в любой программе, порядок выполнения макрокоманд в макросе может быть изменен. Для этого вводятся условия выполнения или пропуска макрокоманд. Эти условия задаются в виде выражений в специальном столбце, который появляется в окне Конструктора макросов, если нажата кнопка Условия (Conditions) на панели инструментов.
Замечание
Как и в случае с группами макросов, можно настроить параметры системы таким образом, чтобы этот столбец появлялся в Конструкторе макросов всегда.
На приведено окно Конструктора для группы макросов "Наклейки для клиентов" (Customer Label Dialog), используемой для печати отчета в виде наклеек на конверты. Причем можно напечатать наклейки сразу для всех клиентов или для клиентов одной страны, выбранной из списка. В окне виден столбец "Условие" (Condition). Если условие, заданное в этом столбце, истинно, выполняется макрокоманда, находящаяся в этой строке. Если условие ложно, соответствующая макрокоманда пропускается и выполняется следующая.
Если требуется при истинности условия выполнить сразу несколько макрокоманд, то для всех макрокоманд, кроме первой, в столбце "Условие" (Condition) ставится многоточие (…). Условие, которое должно проверяться, пишется в строке первой макрокоманды. Тогда, если оно истинно, выполняется весь набор макрокоманд от этого условия и до следующей макрокоманды с заданным условием, до следующего макроса или до конца макроса. Если условие ложно, пропускаются все команды, помеченные многоточием, включая макрокоманду с заданным условием. Далее выполняется макрокоманда, следующая за пропущенными, в которой содержится новое условие или поле "Условие" (Condition) не заполнено. Таким образом, в отличие от "большинства языков программирования, в макросах нет альтернативного ветвления. Для того чтобы создать макрос с двумя альтернативными ветвями, нужно сначала ввести условие и определить макрокоманды, исполняемые при выполнении этого условия. Сразу после них необходимо указать обратное условие и определить макрокоманды, исполняемые в альтернативной ветви. Затем можно ввести макрокоманды, которые исполняются безусловно. Такой способ ветвления используется, например, в макросе "Просмотр" (Preview), который связан с кнопкой Просмотр (Preview) в данной форме. Если пользователь выбрал вариант для всех стран (АН Countries), что определяется значением 1 элемента управления ПечатьНаклеек (PrintLabelFor), то отчет открывается в режиме Предварительного просмотра и форма закрывается. Если выбран переключатель для конкретной страны (Specific Country)", а страна не выбрана (значение поля со списком "ВыборСтраны" (SelectCountry) не задано), то выдается сообщение, фокус устанавливается в поле со списком для выбора страны и выполнение макроса прекращается. Если страна задана, то отображается отчет для выбранной страны и форма закрывается.
В этом макросе используется макрокоманда ОстановитьМакрос (StopMacro). Она позволяет прекратить выполнение макроса, при этом все макрокоманды, следующие по порядку за макрокомандой ОстановитьМакрос (StopMacro), не будут выполняться.
Замечание

Макрокоманду ОстановитьМакрос (StopMacro) имеет смысл использовать, только если за ней идут другие макрокоманды, которые не следует выполнять при некотором условии. Как уже было сказано выше, для указания конца макроса специальной макрокоманды не требуется.