Модуль – это набор объявлений и процедур на языке VBA. В MS Access существует два основных типа модулей: модули класса и стандартные модули.
Модули форм и модули отчетов являются модулями класса, связанными с определенной формой или отчетом. Кроме того, в Microsoft Access существуют модули класса, которые не зависят от форм или отчетов. Их можно использовать для создания описаний специальных объектов.
В стандартных модулях содержатся общие процедуры, не связанные ни с каким объектом, а также часто используемые процедуры, которые могут быть запущены из любого окна базы данных.
Для доступа к модулю выполните следующие действия:
· Чтобы создать стандартный модуль, выберите вкладку МОДУЛИ в окне базы данных и нажмите кнопку СОЗДАТЬ. Чтобы открыть существующий стандартный модуль, выберите вкладку МОДУЛИ, далее модуль, который следует открыть, и нажмите кнопку КОНСТРУКТОР.
· Чтобы открыть модуль формы или модуль отчета, для выбранной формы или отчета нажмите кнопку на панели инструментов или выполните команду Вид/Программа.
Окно свойств удобно открывать с помощью контекстного меню или кнопки панели инструментов .
Процедура обработки события – процедура, автоматически выполняемая в ответ на событие, возникающее в результате действий пользователя, выполнения программы или генерируемое системой.
Чтобы создать процедуру обработки события в режиме конструктора, откройте окно свойств формы, отчета, раздела или нужного элемента управления. Выберите вкладку СОБЫТИЯ, нажмите на кнопку построителя для нужного события и выберите в списке элемент ПРОГРАММЫ.
При создании первой процедуры обработки события для формы или отчета автоматически создается связанный с ней модуль формы или отчета.
Для ссылки на свойство формы или отчета в тексте программы используется следующий синтаксис:
Forms![ИмяФормы].Свойство
Синтаксис ссылки на элемент управления формы или отчета аналогичен:
Forms![ИмяФормы].[ЭлементУправления]
Forms![ИмяФормы].[ЭлементУправления].Свойство
Внутри модуля формы или отчета при ссылке на элемент управления имя формы можно не указывать, если элемент находится в этой же форме или отчете. Для ссылки на активную форму или отчет используется также ключевое слово Me (латинские буквы!). Например, Me.ПолеФирмы.Text.
Рассмотрим пример создания функции Tax_Sale (X), которая для заданного значения аргумента вычисляет налог с продаж так.
Далее приведен текст функции на языке VBA, который нужно поместить в стандартный модуль базы данных.
Public Function Tax_Sale(X)
IfX < 10000 Then
Tax_Sale = 0.05 * X
Else
Tax_Sale = 0.1 * X
End If
End Function
При создании собственных функций помните, что имена функций не должны содержать русских букв.
1) Создайте форму для параметрического запроса Запрос2_10, в которой значение параметра нужно не вводить, а выбирать из списка.
Создайте вспомогательную форму для выбора названия фирмы из списка. На форму поместите элемент поле со списком и две кнопки.
Форма для выбора названия фирмы
Установите свойства формы:
Подпись
Выбор фирмы
Тип границы
Окна диалога
Полосы прокрутки
Отсутствуют
Область выделения
Нет
Поле номера записи
Нет
Разделительные линии
Нет
Всплывающее окно
Да
Модальное окно
Да
Измените свойства кнопок:
Первая кнопка
Вторая кнопка
Имя
ОК
Имя
Отмена
Подпись
ОК
Подпись
Отмена
По умолчанию
Да
Отмена
Да
У элемента поле со списком установите свойства:
Имя
ПолеФирмы
Источник строк
SELECT Фирмы.Название FROM Фирмы;
Для указания значения свойства «Источник строк» воспользуйтесь построителем выражений в этом поле.
Созданная форма должна иметь вид, приведенный на рисунке
Создайте с помощью мастера форму для запроса Запрос2_10. Скопируйте эту форму под именем Запрос2_10_Выбор. Свойство «Источник записей» сделайте пустым.
Добавьте в модуль формы Запрос2_10_Выбор обработку события «Загрузка (Load)». Оно возникает при открытии формы и выводе на экран ее записей. В этот момент нужно определить, для какой фирмы показать информацию. Для этого будет использована форма Выбор_фирмы, которую требуется вывести на экран. Текст модуля приведен ниже.
'Form_Запрос2_10_Выбор: модуль класса
Option Compare Database
Option Explicit
Private Sub Form_Load()
DoCmd.OpenForm "Выбор_фирмы", , , , , acDialog
End Sub
Методы объекта DoCmd (Команда), позволяют запускать макрокоманды Microsoft Access из программ VBA. В нашем примере он используется для открытия (OpenForm) и закрытия (Close) формы.
В модуле формы Выбор_фирмы требуется написать процедуры обработки события Нажатие кнопки (Click) для кнопок ОК и Отмена. Текст модуля приведен ниже.
Значение свойства «RecordSource» (Источник данных) определяет данные, выводимые на форме. В данном случае используется инструкция SQL. Её можно скопировать из запроса Запрос2_10 и изменить последнюю строку. Синтаксис VBA требует, чтобы текстовая информация была заключена в кавычки ("). Так как получается очень длинная строка, она разделена на «кусочки», для «склеивания» которых используется операция конкатенации (символ &). Полученное выражение располагается в программе на нескольких строках, поэтому в конце каждой такой строки стоит символ продолжения ( _ ). Это тоже требование синтаксиса VBA. Переменная ПолеФирмы.Text во время выполнения программы будет содержать название выбранной фирмы. Поэтому в форму будут загружены данные только для нужной фирмы.
1. Дж. Вейскас Эффективная работа с MS Access 2000. Санкт-Петербург: «Питер», 2001.
[1] К.Дейт. Введение в системы баз данных. 7-е издание. : Пер. с англ. - М. : Издательский дом "Вильямс", 2001. - 1072 с..
[2] Событие – любое изменение состояния объекта MS Access.
[3] В угловые скобки заключается обязательный элемент синтаксиса.
[4] В квадратные скобки заключаются один или несколько необязательных элементов, разделенных символом «вертикальная черта» (|).
[5] В фигурные скобки заключаются один или несколько элементов, разделенных символом «вертикальная черта». Следует выбрать один из перечисленных элементов.
[6] Запрос должен заканчиваться символом «точка с запятой» (;)