Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Использование VBA для автоматизации работы в MS Access



Модуль – это набор объявлений и процедур на языке 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 во время выполнения программы будет содержать название выбранной фирмы. Поэтому в форму будут загружены данные только для нужной фирмы.

 

'Form_Выбор_фирмы: модуль класса

Option Compare Database

Option Explicit

 

Private Sub ОК_Click()

ПолеФирмы.SetFocus

Forms![Запрос2_10_Выбор].RecordSource = _

"SELECT Склады.НомерСклада, Склады.Адрес, " & _

"Склады.Телефон " & _

"FROM Фирмы INNER JOIN Склады " & _

"ON Фирмы.КодФирмы = Склады.КодФирмы " & _

"WHERE Фирмы.Название = ' " & ПолеФирмы.Text & " ' "

DoCmd.Close acForm, "Выбор_фирмы", acSaveNo

End Sub

 

Private Sub Отмена_Click()

DoCmd.Close acForm, "Выбор_фирмы", acSaveNo

DoCmd.Close acForm, "Запрос2_10_Выбор", acSaveNo

End Sub

 

Литература

1. Дж. Вейскас Эффективная работа с MS Access 2000. Санкт-Петербург: «Питер», 2001.


[1] К.Дейт. Введение в системы баз данных. 7-е издание. : Пер. с англ. - М. : Издательский дом "Вильямс", 2001. - 1072 с..

[2] Событие – любое изменение состояния объекта MS Access.

[3] В угловые скобки заключается обязательный элемент синтаксиса.

[4] В квадратные скобки заключаются один или несколько необязательных элементов, разделенных символом «вертикальная черта» (|).

[5] В фигурные скобки заключаются один или несколько элементов, разделенных символом «вертикальная черта». Следует выбрать один из перечисленных элементов.

[6] Запрос должен заканчиваться символом «точка с запятой» (;)

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.