Лекция: Макросы и модули

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

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

Для программирования в ACCESS используется процедурный язык Visual Basic для приложений (VBA) c добавлениями объектных расширений и элементов SQL. VBA является стандартным подмножеством Visual Basic, поддерживающим в основном такие же объекты, свойства, методы и другие языковые элементы. Кроме того, VBA – расширяемый язык, который можно обогащать подключением внешних библиотек. Хотя создать приложения в Access можно и без программирования, в большинстве случаев придется написать, по крайней мере, несколько строк кода, чтобы конкретизировать поведение объектов и компонентов приложения. И, кроме того, если разработчик приступает к формированию высокофункционального продукта, знание основ программирования просто необходимо.

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

Программные модули – важнейший компонент приложений Access. Существует два типа модулей; модули класса и стандартные модули. Модуль класса используется для создания объектов, которые могут вызываться из процедур приложения. В отличие от стандартного модуля, который содержит только код, модуль класса содержит и код, и данные.

Модули форм и модули отчетов в Access являются модулями класса, связанными с определенной формой или отчетом. Фактически, формы – это модули класса, которые могут иметь размещенные с них элементы управления и выводить на экран окна формы. Каждый такой модуль может содержать объявления переменных, констант, типов и внешних процедур уровня формы или отчета, а также процедуры обработки событий — разделы кода, где помещаются инструкции, которые выполнятся в ответ на определенные события. Формы и отчеты могут содержать элементы управления. Для каждого элемента управления в модуле формы или отчета имеется соответствующий набор процедур событий. В дополнение к процедурам обработки событий, модули формы могут содержать главные процедуры (General), которые не связаны с событиями и выполняются по вызову из любой процедуры события формы. Код модуля формы или отчета может также обращаться к другим объектам данного приложения.

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

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

ü Имя процедуры обработки события для элемента управления строится из фактического имени элемента управления, символа подчеркивания и имени события. Например, при щелчке командной кнопки с именем Кнопка1, будет вызвана процедура события Кнопка1_Click.

ü В имени процедуры обработки события для формы объединяется слово «Form» (для отчета – «Report»), символ подчеркивания и имя события. При щелчке на поле формы будет вызвана процедура Form_Click.

 

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

Private Sub Form_имя-события (параметры)

Инструкции

End Sub

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

 
 

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

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

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

Именно здесь необходимо использовать процедуры обработки событий.

Событиями в данном случае являются обновление содержимого ПолеСоСписком12 или ПолеСоСписком10.

Для добавления процедур нужно воспользоваться окном свойств элементов в режиме Конструктора (Рисунок 5.3). Текст процедур приведен на Рисунке 5.4. Первая процедура устанавливает при открытии формы текущее значение месяца и года. Во второй процедуре изменяется содержимое информации на форме при смене года. В третьей процедуре – информация изменяется при смене месяца. По сути, на данные накладывается фильтр и выводятся данные, удовлетворяющие условиям фильтра.

‘Процедура открытия формы.

При открытии формы устанавливается текущий месяц и год

Private Sub Form_Open(Cancel As Integer)

ПолеСоСписком12.Value = Month(Date)

ПолеСоСписком10.Value = Year(Date)

mon = ПолеСоСпискомì12.Value

god = ПолеСоСписком10.Value

Me.Filter=«Month([Дата разговора =»& mon & " and Year([Дата разговора]) ="& god

Me.FilterOn = True

End Sub

‘Процедура обновления данных после смены значения года

Private Sub ПолеСоСписком10_AfterUpdate()

mon = ПолеСоСписком12.Value

god = ПолеСоСписком10.Value

Me.Filter =«Month([Дата разговора])=»& mon & «and Year([Дата разговора])=»& god

'Me.FilterOn = True

'Me.Requery

End Sub

‘Процедура обновления данных после смены значения месяца

Private Sub ПолеСоСписком12_AfterUpdate()

mon = ПолеСоСписком12.Value

god = ПолеСоСписком10.Value

Me.Filter =«Month([Дата разговора])=»& mon & «and Year([Дата разговора])=»& god

'Me.FilterOn = True

'Me.Requery

End Sub

Рисунок5.4 — Процедуры обработки событий

 

Более подробно прочитать об использовании языка VBA при создании приложений в Access можно в [4].

еще рефераты
Еще работы по информатике