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, поместите в панель инструментов кнопку для его запуска.
· Создайте макрос с условием, которое позволяет найти фамилии, получившие льготу «Отдых».