Cоздание модуляобработки событий в СУБД Access 2003

RSS, Twitter, Vkontakte, Facebook

Модули обработки событий в Access 2003

Cоздание модуля обработки некоторого события в Access 2003

Автор: Владимир Ткаченко

Источник: Обучение в интернет

Рассмотрим одну из процедур обработки события Click, изложенных на страничке "Создание модуля формы в СУБД Access 2003". В нашем случае событие (нажатие кнопки) происходит, когда пользователь щелкает левой клавишей мыши на командной кнопке cmdPusk. В окне редактора кода Training_students_O - Form_FormaP (Code), скриншот которого представлен на рисунке 1, отображается рассматриваемая заготовка модуля.

окно редактора кода в СУБД Access 2003
Рис. 1

Для завершения процесса создания модуля формы для обработки события необходимо в заготовку модуля (рис.1) между операторами Sub cmdPusk_Click () и End Sub вставить соответствующую процедуру. Процедуру обработки событий можно самостоятельно написать непосредственно в окне редактора кода или использовать код модуля полученный в результате преобразования макроса в процедуру.

Самый простой способ создания модуля - это преобразовать макрос в процедуру, а затем скопировать код VBA в модуль формы Form_FormaP. Для этих целей можно использовать, например, макрос "Откр_запрос", созданный в базе данных Training_students_O. Этот макрос надо преобразовать в модуль и присвоить ему имя "Преобразованный макрос-Откр_запрос".

База данных Access 2003 на вкладке МакросыБаза данных Access 2003 на вкладке Макросы
Рис. 2

Технология преобразования макроса в модуль. Сначала в контекстном меню требуется выбрать команду "Сохранить как" (рисунок 2). Откроется окно диалога Сохранение (рис. 3). В окне выбираем команду Сохранить, как Модуль, и щелкаем на кнопке ОК.

Окно диалога Сохранение макроса как модуль в базе данных Access 2003
Рис. 3

Откроется диалоговое окно "Преобразование макроса: Откр_запрос". В этом окне надо установить флажки и щелкнуть на кнопке Преобразовать. Появится сообщение "Преобразование закончено!", щелкнуть на кнопке ОК.

окно "Преобразование макроса: Откр_запрос" в базе данных Access 2003
Рис. 4

Откроется редактор VB. В окне "Projekt - Деканат" в директории Modules появится новый стандартный модуль: "Преобразованный макрос: Откр_запрос".

окно просмотра объектов "Projekt - Деканат" редактора VBA в Access 2003
Рис. 5

А в окне редактора кода (Code) будет отображаться код программы на Visual Basic.

в окне редактора кода (Code) отображается код программы на Visual Basicв окне редактора кода (Code) отображается код программы на Visual Basic
Рис. 6

В коде преобразованного макроса можно увидеть раздел объявлений "Option Compare Database" или инструкций в верхней части окна, далее помещена строка: ' Откр_запрос. Запись в строке после апострофа - это комментарий. Затем между операторами Function Откр_запрос () и End Function находятся инструкции. Необходимо отметить, что инструкция представляет собой одну строку текста, т.е. начинается и заканчивается на одной строке. Если в строке находится несколько инструкций, то они разделяются двоеточиями. Функция имеет имя и аргументы, которые помещаются в круглые скобки. Даже при отсутствии аргументов, круглые скобки после имени функции обязательны.

Первая инструкция "On Error GoTo Откр_запрос_Err" процедуры указывает на обработку ошибок. При возникновении ошибки "Откр_запрос_Err" будет выполняться инструкция "MsgBox", которая выдает диалоговое окно с описанием ошибки "Error$". $ означает, что результат функции выдается в виде строки. При этом Resume передает управление инструкции Exit Function через инструкцию Откр_запрос_Exit и метку Откр_запрос_Exit, в результате осуществляется выход из процедуры. Если  макрокоманда OpenQuery выполняется без ошибок, то следующая за ней инструкция "Exit Function" обеспечивает выход из процедуры.

Основная часть работы по обработке событий выполняется оператором (процедурой): DoCmd.OpenQuery "Успеваемость студентов", acViewNormal, acEdit. Где DoCmd - процедура класса (DoCmd инструкция) предназначена для работы с записями в VB. Инструкция DoCmd или объект DoCmd позволяет выполнять макросы (макрокоманды) с помощью процедуры на VB.  Инструкция DoCmd имеет следующий формат: DoCmd макрокоманда аргументы.

OpenQuery - это макрокоманда "Открыть запрос". DoCmd.OpenQuery - этот оператор выполняет те же действия, что и запрос на выборку "Успеваемость студентов" на вкладке Запрос или макрос "Откр_запрос" на вкладке Макросы. Макрокоманда OpenQuery имеет три аргумента. Первый аргумент - это имя запроса: "Успеваемость студентов". Второй - режим: acViewNormal - устанавливается по умолчанию для печати формы. Третий аргумент - режим данных: acEdit - режим изменения данных.

Выделяем и копируем оператор (исполняемый код): DoCmd. OpenQuery "Успеваемость_студентов", acViewNormal, acEdit. Затем вставляем его в заготовку модуля формы для обработки события между операторами Sub cmdPusk_Click () и End Sub.

в окне Code редактора VBA отображается исполняемый код обработки событияв окне Code редактора VBA отображается исполняемый код обработки события
Рис. 7

Таким образом, создаем модуль объекта для обработки события Click (нажатия кнопки) объекта cmdPusk. Теперь запрос "Успеваемость_студентов" будет запускаться после выполнения такого события как нажатие кнопки Пуск на форме FormaP. Для этого переходим в окно базы данных на вкладку Формы, выделяем FormaP и щелкаем на кнопке Открыть. Откроется форма "FormaP: форма".

окно формы "FormaP: форма" в окне базы данных Access 2003окно формы "FormaP: форма" в окне базы данных Access 2003
Рис. 8

Щелкаем на кнопке "Пуск", запускается процедура обработки события и в результате откроется запрос "Успеваемость студентов: запрос на выборку".

запрос "Успеваемость студентов: запрос на выборку" в СУБД Access 2003
Рис. 9

В этой статье была рассмотрена технология создания модуля объекта для обработки события Click, использовав в качестве процедуры обработки события код программы преобразованного макроса "Откр_запрос".

Подпишитесь на мою рассылку СУБД MS Access 2003 -это просто!