9.
Использование макросов
9.1. Создание простого
макроса
Макросом называют набор из одной или более макрокоманд, представляющих собой заранее созданные программы, которые выполняются после определенных действий пользователя или СУБД. В среде Access макрос состоит из действий, которые в пошаговом режиме выполняются в случае наступления определенного события, например щелчка мышью по командной кнопке. В разделе 8.3 дано описание создания макроса, который создан с помощью Мастера. Но для расширения возможностей разработчика базы данных макросы создаются в MS Access с помощью Конструктора макросов (Macro Design).
Конструктор макросов представлен на рис. 9.1.

Рис. 9.1
Окно конструктора макросов
состоит из двух полей. Верхняя часть окна называется – область описаний, а
нижняя часть – область аргументов макрокоманды. Для того, чтобы начать
создавать макрос, можно в строке меню нажать на пиктограмму
(новый объект) и выбрать в раскрытом меню
строку
. Другим
способом вызова конструктора макросов, является выбор пиктограммы Макросы среди
объектов базы данных и пиктограммы - Создать. При использовании любого способа,
будет открыто окно для создания макроса с помощью конструктора (рис. 9.1).
В первую очередь следует выбрать имя макрокоманды, которую следует разместить в области описаний конструктора. На рис. 9.1 показан список макрокоманд, который раскрывается в строке Макрокоманда, после установки в ней курсора.
Предположим, мы хотим решить простую задачу – создать макрос, который позволяет открывать таблицу «Сотрудники». Поэтому в списке макрокоманд выбираем – «Открыть Таблицу». С правой стороны существует поле «Примечание», в которое можно вводить текст с пояснением (комментарии). После заполнения строки с макрокомандой, в области аргументов макрокоманды появятся строки (количество строк зависит от макрокоманды), в которых выбирается из списка наименование таблицы (это могут быть и запросы, и формы, и страницы). Кроме того, можно задать режим ввода данных. На рис. 9.2 показано сформированное окно для макроса.

Рис. 9.2
Закрыть окно макроса (рис. 9.2), в соответствии с реакцией системы, сохранить макрос и задать ему имя, например, «Макрос1-Таблица Сотрудники».
Запуск макроса всегда можно осуществить из окна базы данных через объект Макросы.
9.2. Разработка
кнопки для запуска макроса
Макросы можно встраивать в другие макросы или в программы на Visual Basic for Application, а также использовать автономно. В том случае, когда макросом необходимо часто пользоваться, тогда в строку меню базы данных добавляют кнопку для запуска макроса или создают целую панель с перечнем макросов. Рассмотрим, как создать кнопку в строке меню базы данных для запуска макроса.
1. Щелкнуть правой кнопкой мыши в области панели инструментов и в раскрывшемся контекстном меню выбрать строку «Настройка», как это показано на рис. 9.3.

Рис. 9.3
2. Перейти на вкладку Панели инструментов в окне «Настройки» и нажать на кнопку «Создать». Появится диалоговое окно, в котором предлагается создать панель инструментов с именем «Настраиваемая 1», как это показано на рис. 9.4.

Рис. 9.4
3. Введите имя панели, например, «Запуск макроса» и закройте окно кнопкой «ОК».
4. Закрыть окно «Настройка», после чего на экране появится новая панель рис. 9.5.
![]()
Рис. 9.5
5. Перетащите из списка существующих макросов мышкой на созданную панель инструментов (рис. 9.6), после чего эту панель можно установить на экране где угодно.
![]()
Рис. 9.6
Примечание: если созданная панель не будет отображаться в окне базы данных после того, как пользователь запустит базу данных, то эту панель всегда можно вызвать. Для чего следует открыть окно «Настройка» (смотри п. 1), найти в списке запись с именем панели (в примере панель назвали «Запуск макроса»), поставить против записи пометку и закрыть окно.
9.3. Встраивание
макроса в форму
Макросы могут быть встроенными в формы и запросы, а запуск осуществляется при выполнении некоторых условий. Например, при просмотре готовой формы «Должности-фирма главная» необходимо посмотреть сведения об инженерах на фирме, собранных в запросе «Поиск инженеров» только в том случае, если в списке должностей будет слово «Инженер». Перед открытием сведений целесообразно на экран вывести сообщение с предупреждением о готовности системы открыть таблицу с данными. Пример носит условный характер, т.к. в реальной жизни составляют более сложные алгоритмы (без какого-либо программирования) и реализуют их с помощью макросов, которые помогают пользователю анализировать информацию и выбирать при определенных условиях то, что необходимо. Цель создания макроса – показать, как используются условия в макросах, и как осуществить запуск макроса без использования дополнительных кнопок.
Решение поставленной задачи осуществляется по следующей схеме:
1. Раскрыть новое окно Конструктора макросов.
2.
Щелкнуть мышью по пиктограмме
(Условие), при этом откроется окно
конструктора с дополнительным полем «Условие».
3. Приступить к подготовке алгоритма. В первую строку столбца Макрокоманда поместить макрокоманду «Сообщение» (MsgBox).
4. В области аргументов ввести текст сообщения, например, «Можете посмотреть таблицу с данными по категории ИНЖЕНЕР», а в поле «Заголовок» - «Внимание!», как это показано на рис. 9.7 (другие строки заполняются из раскрывающихся списков по усмотрению проектировщика макроса).

Рис. 9.7
5. В первой строке окна построения макроса в столбец Условие необходимо ввести выражение, которое будет определять условие проверки содержимого поля «Должность на фирме» в таблице «Должности-форма главная», созданной в результате построения формы. Выражение должно быть представлено в следующем виде: [Формы]![Должности-форма главная]![Должность на фирме]="Инженер"
Такое выражение ввести вручную довольно сложно, поэтому следует подключить приложение Построитель выражений и с его помощью сформировать запись, в которой производится сравнение наименования должности с константой «Инженер», после завершения записи выражения следует закрыть Построитель выражений.
6. Во вторую строку макроса в столбце Условие поставить три точки (…), что означает не выполнять макрокоманду, если условие не выполняется. В столбце Макрокоманда выбрать из списка и занести «Открыть Запрос». В поле Аргументы макрокоманды указать имя запроса (этот запрос был выполнен ранее и получил название «Поиск инженеров»).
7. Можно заполнить столбец Примечание для обеих строк макроса. Обычно в примечание записывают пояснения. В итоге будет получено описание макроса, который можно, например, сохранить под именем «Макрос2-Условие и сообщение», как это показано на рис. 9.8.

Рис. 9.8
8. Напоминаем, что событие вызова макроса должно происходить при обращении к форме «Должности-форма главная», поэтому требуется макрос связать с этой формой. Для чего следует выполнить следующее:
· Открыть форму «Должности-форма главная» в режиме конструктора (рис. 9.9).
· Выделить поле, в котором должна отображаться «Должность на фирме», как это показано на рис. 9.9.

Рис. 9.9
· Открыть свойства поля (можно щелкнуть правой клавишей мыши по полю). Раскрыть закладку Событие. В строку Вход ввести имя макроса или его имя выбрать из списка, как это показано на рис. 9.10.

Рис. 9.10
· Закрыть форму и сохранить с тем же именем.
9. Провести тестирование работы макроса с условием, для чего необходимо выполнить:
· Запустить форму «Должности-форма главная» из базы данных (рис. 9.11).

Рис. 9.11
· Пролистать записи в форме, когда в поле «Должность на фирме» появится слово Инженер, то должно открыться окно, которое показано на рис. 9.12.

Рис. 9.12
· После того, как будет нажата кнопка «ОК» на экране появится таблица из запроса «Поиск инженеров», показанная на рис. 9.13.

Рис. 9.13
Примечание: созданный макрос иллюстрирует обработку события при заданном условии, этот макрос можно развивать и далее, например, при переходе к следующей записи – закрывать таблицу со сведениями об инженерах, открывать следующую таблицу и т.д.
Вопросы для самоконтроля
1. В каких случаях используют макросы в БД Access?
2. Какими способами можно запустить готовый макрос?
3. Какие средства используют для создания макросов?
4. Как создать макрос в режиме Конструктор макросов?
5. Почему создают панель инструментов с макросами?
6. Что необходимо сделать, чтобы создать макрос с условием?
7. Какие команды для работы с макросом вы можете назвать?
Задания для самостоятельной работы
· Создайте макрос и кнопку для его запуска, чтобы открыть таблицу «Сотрудники».
· После того, как был создан макрос в п.9.3, поместите в панель инструментов кнопку для его запуска.
· Создайте макрос с условием, которое позволяет найти фамилии, получившие льготу «Отдых».