Назначение макроса событию
Наиболее часто макросы используются в приложении Access для обработки событий.
Событие —
это любое действие, распознаваемое объектом, и можно определить реакцию объекта на событие. События происходят в результате действий пользователя, выполнения инструкций VBA или генерируются системой. Примером событий является вывод на экран формы, отчета, ввод данных в текстовое поле, нажатие кнопки мыши или клавиши. Каждому из этих событий можно назначить макрос или процедуру VBA, которые будут автоматически выполняться в ответ на произошедшее событие. Практически все программирование в Access сводится к написанию макросов или процедур, обрабатывающих события, т. е. программируется реакция объектов на события. Существует большое количество различного рода событий, на которые реагируют объекты, причем часто возникает не одно, а целая последовательность событий. Поэтому необходимо обладать определенным умением, чтобы решить, какому событию следует назначить созданный вами макрос или процедуру VBA. Все тонкости этого выбора будут обсуждаться
в разд. "Программирование в формах и отчетах" гл. 13.
Здесь мы опишем только способ назначения макроса событию и приведем примеры обработки событий с помощью макросов.
Начнем с самого простого. Откроем форму "Клиенты" (Customers) в базе данных "Борей". В этой форме отображается информация о клиенте. Допустим, мы хотели бы видеть не только эту информацию, но и данные о купленных клиентом продуктах. Было бы хорошо создать кнопку
Заказы клиента,
при нажатии которой появлялась бы форма "Заказы" (Orders) с заказами только того клиента, который в данный момент выбран в форме "Клиенты" (Customers). Для того чтобы получить желаемое, создадим макрос, который будет выполняться, когда произойдет событие
Нажатие кнопки
(On Click) в форме "Клиенты" (Customers).
Чтобы создать макрос, определяющий описанную реакцию приложения на событие
Нажатие кнопки
(OnClick):
Откройте форму "Клиенты" (Customers) в режиме Конструктора.
Создайте кнопку в области заголовка формы. При этом кнопка мастера на панели элементов должна быть отжата, т. к. в противном случае вам будет предложено создать процедуру обработки событий, а не макрос.
Откройте окно свойств только что созданной кнопки, если оно еще не открыто, и раскройте вкладку
События
(Event).
Обратите внимание, сколько разных событий связано только с командной кнопкой. Помимо обычного нажатия, которое мы сейчас и будем использовать, в набор событий кнопки входят получение и потеря фокуса, двойной щелчок кнопкой мыши, простое перемещение указателя мыши над кнопкой и пр. Такое многообразие событий дает разработчику большие возможности по созданию удобного интерфейса пользователя. Теперь найдите в списке событие
Нажатие кнопки
(On Click) и установите курсор в соответствующую ячейку. Это поле со списком, и в данный момент оно пустое. Если открыть этот список, то первым его элементом будет
[Процедура обработки событий]
([Event procedure]), а далее идет перечень всех макросов, существующих в приложении (рис. 11.10).
Поскольку нужного нам макроса в списке нет, давайте его создадим. Для этого нажмите кнопку Построителя, находящуюся справа от поля. Появится окно
Построитель
(Choose Builder), в котором предлагается выбрать один из трех Построителей:
Выражения
(Expression Builder),
Макросы
(Macro Builder) и
Программы
(Code Builder) (рис. 11.11).
Выберите
Макросы
(Macro Builder) и нажмите кнопку
ОК.
Откроется"окно макросов и диалоговое окно, в которое нужно ввести имя создаваемого макроса. Введите имя Заказы клиента.