Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (960530), страница 64
Текст из файла (страница 64)
При переносе макроса в ячейку макро-304Часть 3. Современные СУБД и их применениекоманды вводится макрокоманда, запускающая этот макрос, а при переноседругих объектов — в макрос добавляется макрокоманда открытия объекта.Завершая создание макроса, требуется задать его имя. Макрос с именемAuto Exec запускается автоматически при открытии базы данных. Временноотменить автоматический запуск этого макроса можно с помощью удержания клавиши <Shift> в момент открытия БД. Используя возможности автозапуска макроса, удобно выполнять различные подготовительные операциинад БД после ее открытия.
К таким операциям относятся вывод заставки (например, формы с картинкой) и открытие главной управляющей кнопочнойформы.Созданные и хранимые в БД макросы могут запускаться пользователемлибо вызываться из других макросов или программ на Visual Basic, а такжепри возникновении определенных событий в БД. Событие — это любое распознаваемое объектом действие, на которое можно задать реакцию. Событиявозникают в результате действий пользователя, выполнения инструкцийVisual Basic или генерируются системой Access. Типичными событиями вMicrosoft Access являются, например, нажатие кнопки мыши, изменение данных, а также открытие/закрытие формы или отчета.Автоматический вызов макросов производят в случае наступления событий в таких объектах БД, как формы и отчеты. Всего существует около 40событий. По функциональному назначению события можно разделить на следующие группы:•события данных (Data Events) возникают при вводе, удалении или изменении данных в форме или элементе управления, а также при перемещении фокуса с одной записи на другую;• события клавиатуры (Keyboard Events) возникают при вводе с клавиатуры, а также при передаче нажатий клавиш с помощью макрокоманды«КомандыКлавиатуры» (SendKeys) или инструкции SendKeys;• события ошибки и таймера (Error and Timing Events) используются приобработке ошибок и синхронизации данных в формах;• события мыши (Mouse Events) возникают при действиях с мышью, например при нажатии кнопки мыши или при удержании кнопки в нажатом положении;•события фильтра (Filter Events) возникают при создании или применении фильтра в форме;• события печати (Print Events) возникают при печати отчета или при егоформатировании для печати;• события фокуса (Focus Events) возникают, когда форма или элемент управления теряют/получают фокус, а также в момент, когда они становятся активными/неактивными;• события окна (Window Events) возникают при открытии, изменении размеров или закрытии формы или отчета.10.
СУБД Access 2002305Для обработки событий в БД Access можно использовать макросы илипроцедуры обработки событий (на языке Visual Basic для приложений). Чтобы организовать обработку события, нужно в ячейке свойства этого событияобъекта (формы, отчета или элемента управления) ввести имя макроса иливыбрать элемент [ П р о ц е д у р а о б р а б о т к и с о б ы т и й ] и нажать кнопку | щПостроителя (рис. 10.17). В последнем случае в соответствующем окне можно написать нужную VBA-программу.ФормаМакет | Данные События | Другие |Все }Текущая записьДо вставкиПосле вставки...До обновленияПосле обновленияУдалениеДо подтверждения DelПосле подтверждения D e l . . .
. .Открытие'Процедчрэ обработки событийЗагрузкаИзменение размераВыгрузкаЗакрытие6Рис. 10.17. Создание процедуры обработки событияРазличные объекты БД имеют свой перечень событий, которые могут возникать в процессе работы с ними в различных режимах. Каждое действие может явиться причиной ряда других событий, возникающих в определеннойпоследовательности. Понимание того, когда и в какой последовательности возникают события, существенно, поскольку порядок событий определяет условия и очередность выполнения макросов и процедур обработки событий.Название свойства, как правило, происходит от имени события или дажесовпадает с ним. Так, форма или отчет имеют свойство О т к р ы т и е ( О п О р е п ) ,позволяющее задать макрос или процедуру обработки события при возникновении события Открытие (Open). Имя макроса или процедуры обработкисобытия является значением свойства.Для изменения процедуры обработки события нужно выполнить следующее:1.
В режиме Конструктора формы/отчета открыть окно свойств объектаи л и его э л е м е н т а и в ы б р а т ь в к л а д к у События (Events).2. Выбрать свойство события, в ответ на которое должна выполняться процедура, и нажать кнопку Построителя рядом с ячейкой свойства. Откроется окно диалога П о с т р о и т е л ь ( B u i l d e r ) .Часть 3. Современные СУБД и их применение3063.
В ы б р а т ь д в о й н ы м щ е л ч к о м к н о п к и м ы ш и э л е м е н т П р о г р а м м ы( P r o g r a m s ) . В окне модуля откроется процедура (если пользователь несоздавал ее ранее — заготовка процедуры, содержащая инструкции Subи End Sub).4. Ввести текст программы, которая должна выполняться в ответ на событие.СозданиемодулейД л я автоматизации выполнения некоторых действий в простейших приложениях используют макросы. В некоторых случаях обойтись макросамине удается и приходится прибегать к написанию VBA-программ. К примеру,использование программирования может помочь в решение следующих задач:• обработка ошибок в приложении;• создание собственной функции обработки, например, округления значения;• получение прямого доступа к функциям Windows API;• создание приложения с высокой производительностью (программы компилируются и выполняются быстрее, чем макросы);• создание новых объектов Б Д во время работы приложения.VBA-программы хранятся в модулях БД, которые бывают двух видов:• стандартные — создаются пользователем и видны во вкладке Б Д М о д у ли (Modules);• модули форм/отчетов — создаются автоматически и являются частьюэтих объектов (форм/отчетов).П р о г р а м м ы на я з ы к е VBA составляются в виде процедур двух типов:ф у н к ц и й ( о п и с а т е л ь F u n c t i o n ) и подпрограмм (описатель Sub).
Процедура может иметь параметры, через которые ей передаются значения. Основное отличие ф у н к ц и и от подпрограммы состоит в том, что первая может вточку вызова вернуть единственное значение, вторая — значений, не возвращает. Кроме того, ф у н к ц и ю можно вызывать из различных мест, в томчисле из макросов и выражений, используемых в запросах, таблицах (ву с л о в и я х на значение (Validation R u l e ) ) и л и формах. Подпрограмму можно вызвать из ф у н к ц и и или как процедуру обработки события в форме и л иотчете.Стандартные модули используются для создания и хранения процедур,вызываемых из различных объектов БД.
Модули форм/отчетов предназначены для создания и хранения процедур, используемых в форме/отчете. Вкаждом модуле формы/отчета в Б Д содержатся заготовки процедур обработки событий, которые вызываются в ответ на события, возникающие в форме10. СУБД Access 2002307или отчете. Пользователь может создавать собственные процедуры обработки событий, добавляя тексты VBA-программ в эти заготовки.Для создания стандартного модуля требуется в окне открытой базы данн ы х (рис. 10.5) в ы б р а т ь в к л а д к у Модули (Modules) и н а ж а т ь к н о п к у Создать( N e w ) . Начать создание модуля можно также, задав в пункте В с т а в к а ( I n s e r t )главного меню Access команду М о д у л ь ( M o d u l e ) .Для редактирования модуля формы/отчета в окне открытой БД нужновыделить мышью соответствующий объект или перевести его в режим Конструктора.
Затем в меню В и д ( V i e w ) выбрать пункт П р о г р а м м а ( C o d e ) илинажать кнопкупанели инструментов. Ввод и редактирование текстов программ стандартного модуля или модуля формы/отчета производится в окнемодуля (рис. 10.18).Рис. 10.18. Окно модуляВ верхней части окна модуля находятся следующие два раскрывающихсясписка: список объектов (слева) и список процедур (справа).1. Список объектов. При редактировании модуля формы/отчета в этом списке можно выбрать форму/отчет (целиком), необходимый раздел или элемент управления, способный генерировать событие. Для выбора разделаописания имеется элемент [ О б щ а я о б л а с т ь ] ( [ G e n e r a l ] ) . Стандартный модуль в списке О б ъ е к т содержит только элемент [ О б щ а я о б л а с т ь ] .2.
Список процедур — есть список процедур выбранного объекта из первого списка, которые можно редактировать. Выбранная в этом списке процедура выводится в текстовой области окна модуля. На рис. 10.19 приведена процедура f u n l подачи звукового сигнала.Сохранить введенные тексты программ можно командой С о х р а н и т ь ( S a v e )пункта меню Ф а й л ( F i l e ) , с помощью кнопки сохранения панели инструментовили закрытием окна модуля с последующим подтверждением о сохранении.Часть 3. Современные СУБД и их применение308Созданные и находящиеся в файле базы данных VBA-программы при первом обращении к ним автоматически компилируются Access, после чего вызываются на выполнение.
Д л я ускорения работы приложения VBA-программы можно заранее откомпилировать и сохранить в базе данных вместе сисходными текстами. Д л я этого нужно открыть любой модуль в Б Д и выполнить команду О т л а д к а | К о м п и л и р о в а т ь ( D e b u g | C o m p i l e ) . После этого, находясь в окне модуля (рис. 10.19), нужно сохранить результат компил я ц и и с п о м о щ ь ю команды Ф а й л | С о х р а н и т ь ( F i l e | S a v e ) . П л а т о й заускорение вызова VBA-программ Б Д я в л я е т с я увеличение размера mdbф а й л а базы данных.1 0 . 5 .
Работа с г и п е р с с ы л к а м иВ числе возможных типов полей таблиц Access 2002 имеется сравнительно недавно появившийся, но в то же время весьма полезный тип данных —Г и п е р с с ы л к а ( H y p e r l i n k ) . О н позволяет хранить в поле простые или сложные ссылки на файлы, документы и другие объекты, находящиеся как в базеданных, так и вне нее.ХарактеристикагиперссылкиГиперссылки могут содержать URL-адрес в сети Internet или intranet илисетевой маршрут в формате U N C к файлу на сервере локальной сети или надиске локального компьютера. Ссылка может указывать на файл в форматеH T M L или в формате, поддерживаемом приложением O L E или ActiveX, установленном на компьютере.Поле гиперссылки по структуре хранимой информации является текстовым иможет содержать до 2048 символов.