События разделов отчета
Если отчет открывается для печати или предварительного просмотра, события разделов отчета Форматирование и Печать возникают после событий отчета Открыть и Включение, но до событий отчета Отключение и Закрыть. Последовательность будет такой:
Открыть (для отчета) • Включение (для отчета) • Форматирование (для раздела отчета) • Печать (для раздела отчета) • Выключение (для отчета) • Закрыть (для отчета).
Кроме того, либо на стадии форматирования отчета, либо по завершении форматирования, но до наступления события Печать могут возникнуть следующие события:
• Возврат – происходит при возвращении в предыдущий раздел отчета на стадии его форматирования;
• Отсутствие данных – возникает при отсутствии записей в отчете;
• Страница – возникает, когда отчет отформатирован, но еще не начал печататься. Вы можете использовать данное событие, чтобы изменить оформление отчета для печати.
Как видите, событий много, и они довольно разнообразны. Это делает объекты базы данных и элементы управления очень чувствительными к любым действиям пользователя и к внутренним изменениям, которые происходят в БД. Зато такой набор событий обеспечивает гибкую реакцию программы практически на каждое уточнение, вносимое в базу данных.
Обратите внимание на кнопки, которые расположены справа от каждого события в таблице свойств элемента управления. Щелкнув по стрелке прокрутки, вы откроете список имеющихся макросов и сможете подключить к обработке события любой из них. Кнопка
позволяет активизировать процедуру обработки события на языке VBA Об этом речь пойдет в главе 12.
Автоматический перевод фокуса при помощи макроса
Конкретная задача, которую нам надо решить, заключается в следующем. Как было показано в главе 4, мы используем форму для ввода новых записей. Напомним, что в качестве примера рассматривается форма Страны (см. рис. 10.1). Когда мы внесем новые данные в первое поле (скажем, в поле Код), курсор по умолчанию останется в нем. Однако нам нужно, чтобы он переместился в следующее поле – Страна, потому что после ввода кода надо указать название страны. Курсор придется переводить вручную. Конечно, это не очень сложная операция, но когда таких операций много, пользователь испытывает дополнительные неудобства. Если применять при обработке событий макросы, подобных неприятностей легко избежать.
Итак, автоматический переход курсора (например, из поля Код в поле Страна) должен произойти, когда мы завершим ввод информации в поле Код. Следовательно, макрос в данном случае стоит привязать к событию После обновления. Однако для поля Код принята несколько другая схема обработки – с помощью операторов VBA Подробно она рассматривается в главе 12, но вкратце сводится к следующему. Когда форма Страны открывается, она изначально готова к вводу новой записи: в поле Код автоматически устанавливается ее порядковый номер, а остальные поля пусты. Если пользователь собирается не вводить новую запись, а заглянуть в какую-либо из старых, он может сделать это с помощью стрелки прокрутки в этом поле. Но программа не знает заранее, какая запись понадобится пользователю для просмотра, поэтому форма по умолчанию настроена на то, что наиболее вероятно: она будет открыта для ввода новой записи. Таким образом, нет необходимости вручную вводить значение в поле Код: при открытии формы новый код появляется автоматически. Значит, переход к следующему полю также можно связать с событием Открытие в окне свойств формы. Но возможен и другой путь: соотнести такой переход с событием Получение фокуса для поля Код в окне его свойств. Мы выберем второй вариант.
Чтобы реализовать его, нужно создать команду перехода к следующему элементу управления – полю. Используем для этого макрос.
В окне базы данных откройте вкладку Макросы и щелкните по кнопке
На экране появится окно конструктора макросов (см. рис. 10.3).
Рис. 10.3