Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция по Ms Access.doc
Скачиваний:
92
Добавлен:
19.05.2015
Размер:
1.86 Mб
Скачать

3. Применение процедур vba

В программировании на языке Access VBA объектами можно управлять двумя способами. Первый — это управление объектом из программы, внешней по отношению к объекту. В Access VBA такие внеш­ние программы определяются как методы специального объекта Access VBA с именем DoCmd. Методы DoCmd аналогичны макродействиям в макропрограммировании.

Схема действия объекта DoCmd

Методы Объект

DoCmd Действует

на объект Свойства Методы

Второй способ управления объектами в Access VBA — это так называемый объектный подход, позволяющий работать непосредственно с объектом и его внутренними программами. Для задания или изменения свойства объекта можно использовать оператор присваивания, а также выполнять собственные методы объекта.

Эти методы представляют собой набор из более чем 100 заранее определенных действий, встроенных в Access в качестве внутренних составных частей его объектов. В VВА объект можно понимать как совокупность его свойств и методов: свойства определяют, что представляет собой объект, а методы - что этот объект может делать.

Объект

Установка или Свойства Методы Выполнение

изменение свойств метода

Можно писать процедуры VBA, ориентированные на операцию выбора. Такие процедуры должны либо выделять объект, либо распознавать активный объект.

Модель программирования в Access

В Access применяется модель программирования, основанная на событиях. Пишется процедура, которую Access будет выполнять в тот момент, когда в определённом объекте произойдёт определённое событие, и эта программа связывается со свойством события в этом объекте. Программа запускается после наступления данного события.

Типы процедур

В языке программирования VBA имеются процедуры трёх типов: процедуры-функции или просто функции, процедуры-подпрограммы или просто подпрограммы и процедуры обработки свойств.

Процедура-функция может выполнять определённое действие и возвращать одиночное значение, которое вычисляется в функции и присваивается имени функции в одном из операторов внутри неё.

Синтаксис

[ Область Function имя_функции [( список аргументов as тип

видимости] с указанием типа данных)] возвращаемого

значения

[операторы]

[имя_функции=выражение]

End Function

Пример

Написать функцию, которая вычисляет площадь треугольника по формуле Герона.

Function площадь(сторона1 As Single, сторона2 As Single, сторона3 As Single) As Single

Dim p As Single, s As Single

p = сторона1 + сторона2 + сторона3

s = Sqr(p * (p - сторона1) * (p - сторона2) * (p - сторона3))

площадь = s

End Function

Процедуры-функции можно применять также для обработки событий. При наступлении события Access автоматически запускает процедуру-обработчик и отбрасывает возвращаемое функцией значение.

Процедура-подпрограмма выполняет определённое действие, но не

возвращает значения. Как правило подпрограммы применяются для обра-

ботки событий.

Синтаксис

Sub имя_подпрограммы[(список аргументов с указанием типа данных)]

[операторы]

End Sub

Процедуры-подпрограммы, которые обрабатывают события, называются процедурой обработки события или обработчиком события. Они подчиняются ряду правил, в том числе правилам именования.

Например, обработчик события в форме или отчёте должен иметь имя Form_имя_события или Report_имя_события. Эти имена, обычно, устанавливаются автоматически при выборе события.

Процедура обработки свойства создаёт пользовательское свойство объекта. Как правило, каждое пользовательское свойство реализуется парой процедур обработки свойств, одна из которых устанавливает значение свойство, а другая возвращает его значение. Процедура обработки свойства, устанавливающая его значение, начинается с оператора Property Let, если присваивается значение, или с оператора Property Set. если присваивается указатель на объект. Эти процедуры не возвращают значений. Процедуры, возвращающие значения свойств, начинаются с оператора Property Get. Все эти процедуры заканчиваются оператором End Property.

При создании процедур можно указать доступность процедуры для других модулей или область видимости процедуры. Cделать это можно с помощью ключевых слов Private и Public. По умолчанию, т.е. если не задана область видимости, процедуры считаются открытыми (Public). Такие процедуры можно вызывать из процедур, относящихся к другим модулям; закрытые процедуры (Private) доступны только для процедур содержащего её модуля.

В Access определены события для форм и отчетов, для разделов форм и отчетов, а также для элементов управления форм. Для таблиц, запросов и страниц доступа к данным события не определены.

Последовательности событий

Когда пользователь, процедура VBA или компьютер выполняет

какие-либо действия, последовательность событий распознается одним

или несколькими объектами. Приведем несколько примеров.

Щелчок кнопкой мыши

При щелчке левой кнопкой мыши на элементе управления в нем последовательно происходят три события:

  • MouseDown (Кнопка вниз) — при нажатии кнопки мыши.

  • MouseUp (Кнопка вверх) — при отпускании кнопки мыши.

  • Click (Нажатие кнопки) — после того, как левая кнопка мыши была нажата и отпущена.

События MouseDown и MouseUp регистрируются элементом управления независимо от того, какая кнопка мыши нажата;

Событие же Click - только при нажатии левой кнопки мыши.

Щелчок на кнопке

Если элемент управления может получать фокус, в только что рассмотренной ситуации распознается еще несколько событий. Например, щелчок левой кнопкой мыши на кнопке вызывает последователь­ность из пяти событий:

  • Enter (Вход) — до того, как кнопка фактически получит фокус от другого элемента управления той же формы, или если эта кнопка является первым элементом управления формы, который получает фокус при ее открытии.

  • GotFocus (Получение фокуса) — после того, как кнопка получила фокус.

  • MouseDown — при нажатии кнопки мыши.

  • MouseUp — при отпускании кнопки мыши.

  • Click — после того, как левая кнопка мыши была нажата и отпущена.

Изменение текста в поле или в поле со списком

Содержимое поля или поля со списком можно изменить с помощью клавиатуры. Не все клавиши вызы­вают передачу символа на экран (к таким клавишам относятся, например, клавиши Enter и Tab). В Win­dows символы, вводимые с клавиатуры и выводимые на экран, принадлежат набору символов ANSI. При нажатии клавиши, которой соответствует

символ из этого набора, символ появляется в поле. При попытке изменить

текст нажатием клавиши поле распознает четыре последовательных события:

  • KeyDown (Клавиша вниз) - при нажатии любой клавиши

  • KeyPress (Нажатие клавиш) - при нажатии клавиши, генерирующей символ

  • Change (Изменение) - если совершено изменение содержимого поля или текстовой части поля со списком

  • KeyUp (Клавиша вверх) - при отпускании любой клавиши

Поле

Если текст в поле был изменен с клавиатуры и затем пользователь попытался каким-либо способом обновить содержимое этого элемента управления, переходя к другому элементу управления формы, в поле происходят еще два события:

  • BeforeUpdate (До обновления) — когда Access обнаруживает изменение непосредственно перед помещением измененных данных в буфер записи

  • AfterUpdate (После обновления) — когда Access обнаруживает изменение значения в поле, сразу после помещения измененных данных в буфер записи.