Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных-1.pdf
Скачиваний:
18
Добавлен:
06.02.2018
Размер:
614.28 Кб
Скачать

5. РАЗРАБОТКА VBA ПРИЛОЖЕНИЙ

В языке Visual Basic для приложений (VBA) замкнутыми программными единицами являются процедуры. Процедура содержит набор инструкций и методов, с помощью которых выполняются действия или рассчитывается значение. Например, в следующей процедуре обработки события при использовании метода OpenForm открывается форма Заказы:

Private Sub ОткрытиеФормыЗаказы_Click() DoCmd.OpenForm "Заказы"

End Sub

Существуют процедуры двух типов: процедура-подпрограмма Sub и про- цедура-функция Function.

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

Каждая форма или отчет в базе данных имеет встроенный модуль формы или модуль отчета, содержащий встроенные процедуры обработки событий, которые выполняются в ответ на события, возникающие в форме или отчете и в элементах управления в форме или отчете. После того как Microsoft Access определит, что событие возникло в форме, отчете или в элементе управления, автоматически запускается процедура обработки события, имя которой образуется как комбинация имен объекта и события. Например, процедура обработки события позволяет открыть другую форму при нажатии кнопки в форме. При создании объекта с помощью мастера часто автоматически создаются процедуры обработки событий для данного объекта. Для того чтобы понять, как работают процедуры, полезно ознакомиться с такими процедурами.

Процедура-функция Function (часто такие процедуры называют просто функциями) возвращает значение, например полученное в результате расчетов. Visual Basic включает ряд встроенных функций, например функция Now возвращает текущее значение даты и времени. В дополнение к встроенным функциям пользователь имеет возможность самостоятельно создавать функции, которые называют специальными.

Функции, возвращающие значения, могут использоваться в выражениях. Выражения, содержащие функции, широко используются в Microsoft Access, например в аргументах инструкций или в методах Visual Basic, при указании значений свойств и при определении условий в запросах или фильтрах.

Ниже приводится пример процедуры Function с именем НачалоСледующегоМесяца, которая возвращает дату первого дня следующего месяца:

Function НачалоСледующегоМесяца() НачалоСледующегоМесяца = _ DateSerial(Year(Now), Month(Now) + 1, 1) End Function

Данная функция состоит из единственной инструкции присвоения, в которой результат выражения (стоящего справа от знака равенства [=]) присваива-

15

ется функции НачалоСледующегоМесяца (имя которой стоит слева от знака равенства). Результат рассчитывается с помощью встроенных функций Visual Basic DateSerial, Year, Now и Month.

После создания функции ее можно использовать в Microsoft Access в л ю- бых выражениях. Например, чтобы сделать дату первого дня следующего месяца значением, которое поле получает по умолчанию, следует в окне свойств определить свойство этого поля Значение по умолчанию (DefaultValue) с помощью следующего выражения:

=НачалоСледующегоМесяца()

Для того чтобы использовать функцию в качестве значения свойства, ее необходимо поместить в модуль формы или отчета или в стандартный модуль. Нельзя использовать функцию в модуле класса, не закрепленном за формой или отчетом в виде значения свойства формы или отчета.

Использование макросов и программ Visual Basic. В Microsoft Access

многие действия выполняются с помощью макросов или через интерфейс пользователя. Во многих других СУБД для решения тех же самых задач требуется программирование. Выбор между созданием макроса или разработкой программы Visual Basic для приложений обычно определяется требуемыми действиями.

В каких случаях следует создавать макрос?

Макрос является удобным средством выполнения простых задач, таких как открытие и закрытие форм, вывод на экран и скрытие панелей инструментов или запуск отчетов. Действия, связывающие различные объекты базы данных, выполняются легко и просто, поскольку пользователь не должен запоминать правила синтаксиса – все аргументы, требуемые каждой макрокомандой, выводятся в нижней половине окна макроса.

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

определение общих назначенных клавиш; выполнение макрокоманды или набора макрокоманд при открытии базы

данных. Однако определенные действия, которые должны производиться при открытии базы данных, например открытие формы, могут быть заданы в диало-

говом окне Параметры запуска.

В каких случаях следует создавать программу Visual Basic?

Программы Visual Basic используют вместо макросов в случаях, когда необходимо:

упростить управление базой данных. Поскольку макросы являются объектами, существующими отдельно от использующих их форм и отчетов, поддержание базы данных, в которой реакция на события в формах и отчетах определяется многими макросами, становится достаточно затруднительным. В отличие от этого процедуры обработки события Visual Basic являются встроенными в описания соответствующих форм и отчетов. При переносе формы или отчета из одной базы данных в другую встроенные процедуры обработки события автоматически переносятся вместе с формой или отчетом;

16

создавать собственные специализированные функции. В Microsoft Access определен ряд встроенных функций, например функция IPmt, которая рассчитывает проценты по платежам. Пользователь имеет возможность использовать для проведения расчетов встроенные функции без необходимости разрабатывать сложные выражения. Однако язык Visual Basic позволяет пользователям создавать собственные функции как для решения задач, выходящих за рамки возможных для встроенных функций, так и для замены сложных выражений, содержащих встроенные функции. Кроме того, создаваемые пользователем функции используются для выполнения одинаковых операций над разными объектами;

скрывать сообщения об ошибках. Стандартные сообщения об ошибках Microsoft Access, выводящиеся при возникновении нештатных ситуаций во время работы пользователя с базой данных, могут оказаться малопонятными для пользователя, в особенности для не имеющего большого опыта работы

сMicrosoft Access. Средства Visual Basic позволяют перехватывать ошибку при ее возникновении и либо выводить собственное сообщение об ошибке, либо предпринимать определенные действия;

создавать или обрабатывать объекты. В большинстве случаев удобнее создавать или изменять объекты в режиме конструктора. Однако в некоторых ситуациях приходится работать с описанием объекта в программе. Средства Visual Basic позволяют выполнять обработку любых объектов в базе данных и самой базы данных;

выполнять действия на системном уровне. Выполнение в макросе макрокоманды ЗапускПриложения (RunApp) позволяет запускать из собственного

приложения другое приложение, работающее в среде Windows или MS-DOS, однако это практически все, что можно сделать вне Microsoft Access из макроса. Средства Visual Basic позволяют проверять существование файлов, использовать механизм программирования объектов или динамического обмена данными (DDE) для связи с другими приложениями, работающими под управлением Windows, например Microsoft Excel, а также вызывать функции из библиотек динамической компоновки (DLL) Windows;

обрабатывать записи по одной. Инструкции Visual Basic позволяют перебирать наборы записей по одной и выполнять определенные действия над отдельной записью. В отличие от этого макросы позволяют работать только с целым набором записей;

передавать аргументы в специальные процедуры Visual Basic. Пользователь имеет возможность задать в окне макроса значения аргументов макрокоманды при создании макроса, однако невозможно изменить значения этих аргументов при выполнении макроса. В отличие от макросов в программах Visual Basic допускается передача аргументов в программу при запуске программы или использование в качестве аргументов значений переменных. Поэтому использование программ Visual Basic дает более широкие возможности работы

сданными.

17

Открытие окна макроса или модуля из формы или отчета. В режиме конструктора формы или режиме конструктора отчета выполните одно из следующих действий.

Чтобы открыть окно свойств формы или отчета, установите указатель на область выделения формы или область выделения отчета и дважды нажмите кнопку мыши.

Чтобы открыть окно свойств раздела, установите указатель на область выделения раздела и дважды нажмите кнопку мыши.

Убедитесь, что нужный элемент управления выделен, и нажмите кнопку Свойства на панели инструментов.

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

(OnClick).

Выберите в списке элемент Макросы, чтобы открыть окно макроса, или элемент Программы, чтобы открыть окно модуля.

Для просмотра всех программ, определенных для формы или отчета, выберите в меню Вид команду Программа.

Создание модуля класса, связанного с формой или отчетом. В окне ба-

зы данных или в окне модуля выберите команду Модуль класса в меню Вставка. Появится пустой модуль класса.

Добавьте в модуль необходимые процедуры и описания.

Для сохранения модуля нажмите кнопку Сохранить на панели инструментов и задайте имя модуля в диалоговом окне Сохранение.

После первого сохранения модуля класса его имя появляется на вкладке

Модули окна базы данных. Чтобы открыть модуль, нажмите кнопкуКонструктор.

Использование аргументов в программах Visual Basic для приложений

(VBA). Аргументы используются для передачи необходимых данных в процедуру, инструкцию или метод. Для того чтобы иметь возможности передавать информацию в вызываемую процедуру, следует при создании процедуры Function или Sub описать ее аргументы.

При вызове процедуры, имеющей аргументы, необходимо указать значения этих аргументов. Аргументы имеются у ряда инструкций и методов.

Аргументы помещаются сразу после имени процедуры, инструкции или метода. Для процедуры Function или для метода, который возвращает значение, необходимо заключать аргументы в круглые скобки. Если задаются несколько аргументов, то необходимо разделять их запятыми. Например, в следующей конструкции метод Close объекта DoCmd закрывает форму Новый товар. Данный метод принимает два аргумента, константу acForm и имя Новый товар:

DoCmd.Close acForm, "Новый товар"

Этот метод не возвращает значение, поэтому аргументы не заключаются в скобки.

Работа с данными и с объектами базы данных с помощью программ

Visual Basic для приложений (VBA). Наряду с обработкой данных и объектов

18

базы данных с помощью интерфейса пользователя Microsoft Access, пользователь имеет возможность определить процедуры, которые автоматически создают, изменяют и удаляют данные и объекты. Например, можно создать процедуру, помещающую подпись в форму или изменяющую цвет поля в форме.

В процедурах допускаются прямые ссылки на данные и объекты или описание объектных переменных, представляющих данные и объекты. После описания объектной переменной и присвоения ей значения эта переменная может быть использована везде, где используется объект. Значения объектных переменных изменяются так же, как значения других переменных. Например, следующая процедура Sub создает таблицу Старые счета, содержащую единственное поле КодЗаказа:

Sub CreateTable ()

' Описывает переменные.

Dim dbs As Database, tbl As TableDef, fld As Field

'Присваивает объектной переменной

'значение текущей базы данных.

Set dbs = CurrentDB

'Создает таблицу и поле и присваивает их

'объектным переменным.

Set tbl = dbs.CreateTableDef("Старые счета ")

Set fld = tbl.CreateField("КодЗаказа", dbText)

'Добавляет поле в таблицу

'и таблицу в базу данных. tbl.Fields.Append fld

dbs.TableDefs.Append tbl dbs.TableDefs.Refresh End Sub

В ядре базы данных Microsoft Jet определены объекты, такие как таблицы, запросы, связи и индексы, с помощью которых выполняются операции сохранения и упорядочения данных в базах данных Microsoft Access. Такие объекты называют объектами доступа к данным (DAO). Программы Visual Basic, в которых используются объекты доступа к данным, могут применяться для совместной работы с другими приложениями, такими как Microsoft Excel, использующими ядро базы данных Jet.

Кроме того, в Microsoft Access определен ряд объектов, предназначенных непосредственно для обработки данных, таких как формы, отчеты и элементы управления.

Выполнение программы Visual Basic для приложений (VBA).

В Microsoft Access для выполнения программы Visual Basic следует запустить содержащую эту программу процедуру Sub или процедуру Function. Программа записывается внутри процедуры как набор инструкций и методов, с помощью которых выполняются требуемые операции или рассчитываются значения.

Процедуры сохраняются в объектах базы данных, которые называются модулями. Сами модули не являются выполняемыми объектами; содержащиеся в модулях процедуры выполняются в ответ на события или вызываются из выражений, макросов или других процедур.

19

В Microsoft Access существуют следующие способы запуска программ

Visual Basic:

включение программы в процедуру обработки события. Например, программу, выполняющуюся при открытии формы, включают в процедуру обработки события Нажатие кнопки (Click) для кнопки, при нажатии которой будет открываться эта форма;

вызов функции в выражении или на панели проверки окна отладки. Например, функции применяются в выражениях, определяющих вычисляемые поля в формах, отчетах или запросах. Выражения используются для указания условий в запросах и фильтрах, а также в макросах и макрокомандах, в инструкциях и методах Visual Basic и в инструкциях SQL;

вызов процедуры Sub в другой процедуре или в окне отладки с панели проверки. Например, в процедуру Sub, которая вызывается в других процедурах, включают подпрограмму, выполняющую операции, которые требуется выполнять в разных процедурах. Вместо того чтобы включать одну и ту же программу Visual Basic в каждую процедуру, удобно один раз создать процеду- ру-подпрограмму, а затем вызывать ее по мере необходимости;

выбор команды Продолжить в меню Запуск для запуска процедуры без аргументов. В окне модуля поместите курсор в процедуру, которую нужно запустить. Выберите Продолжить в меню Запуск;

выполнение макрокоманды ЗапускПрограммы (RunCode) в макросе. Макрокоманда ЗапускПрограммы (RunCode), выполняемая в макросе, вызывает встроенную функцию Visual Basic или функцию, созданную пользователем. (Для запуска процедуры Sub следует создать функцию, которая вызывает процедуру Sub, и с помощью макрокоманды ЗапускПрограммы (RunCode) вызвать

эту функцию).

Совместная работа объектов базы данных. Событие – это определенное действие, которое происходит над объектом или возникает в определенном объекте. Microsoft Access реагирует на большое число различных событий: нажатие кнопки мыши, изменение данных, открытие или закрытие форм и т. д. Обычно события возникают вследствие действий пользователя. С помощью процедур обработки события или макроса возможно определение собственных откликов на события, происходящие в форме, отчете или элементе управления.

Предположим, что при нажатии кнопки Сведения в форме Заказы должна открываться форма Товары. Откликом на событие Нажатие кнопки (Click) является активация процедуры обработки события. При создании процедуры обработки события для объекта в модуль формы или модуль отчета добавляется именованная заготовка процедуры обработки события для данного события и объекта. Остается только дописать код, определяющий желаемый отклик на

событие в форме или отчете.

В задании требуется создать рабочую форму, в которой имеется поле со списком (источник записей – таблица БД). Выбираемые значения помещаются в другое поле рабочей формы через запятую с использованием процедуры VBA. Кроме того, на рабочей форме сформировать кнопку, которая запускает процедуру VBA с выполнением команд SQL из пункта 3.

20

Соседние файлы в предмете Базы данных