Использование модулей в MS Access
Теперь, когда у вас уже есть небольшой опыт создания макроса, рассмотрим пример использования модуля в MS Access. Для создания модулей необходимо иметь первоначальные знания по языку программирования Visual Basic. Прежде чем приступить к созданию модуля, рассмотрим несколько ключевых понятий. В MS Access существуют два основных типа модулей: модули класса и стандартные модули. Каждая процедура в модуле может быть либо процедурой-функцией Function, либо процедурой-подпрограммой Sub.
Модули класса. Модули форм и модули отчетов являются модулями класса, связанными с определенной формой или отчетом. Они часто содержат процедуры обработки событий, запускаемые в ответ на событие в форме или отчете. Процедуры обработки событий используются для управления поведением формы или отчета и их откликом на события, такие, как нажатие кнопки.
При создании первой процедуры обработки события для формы или отчета автоматически создается связанный с ней модуль формы или отчета. Для просмотра модуля для формы или отчета достаточно нажать кнопку «Программа» на панели инструментов в режиме конструктора.
В процедурах модулей форм и отчетов могут содержаться вызовы процедур, добавленных в стандартные модули.
Стандартные модули. В стандартных модулях содержатся общие процедуры, не связанные ни с каким объектом, а также часто используемые процедуры, которые могут быть запущены из любого окна базы данных.
Для просмотра списка стандартных модулей базы данных щелкните Модули в списке Объекты в окне базы данных. Формы, отчеты и стандартные модули выводятся также в окне просмотра объектов.
Процедуры: общие сведения
В языке Visual Basic замкнутыми программными единицами являются процедуры. Процедура содержит набор инструкций и методов, с помощью которых выполняются действия или рассчитывается значение. Например, в следующей процедуре обработки события метод OpenForm открывает форму «Заказы»:
Private Sub ОткрытиеФормыЗаказы_Сlick()
DoCmd.OpenForm «Заказы»
End Sub
Существуют процедуры двух типов: процедура-подпрограмма Sub и процедура-функция Function.
Процедура-подпрограмма Sub, аналогично инструкциям Visual Basic, выполняет действие или набор действий, но не возвращает значение. Пользователь имеет возможность создавать процедуры Sub самостоятельно или использовать процедуры обработки событий, определенные в Microsoft Access.
Каждая форма или отчет в базе данных имеют встроенный модуль формы или модуль отчета, содержащий встроенные процедуры обработки событий, которые выполняются в ответ на события, возникающие в форме или отчете и в элементах управления в форме или отчете. После того как Microsoft Access определит, что событие возникло в форме, отчете или в элементе управления, автоматически запускается процедура обработки события, имя которой образуется как комбинация имен объекта и события. Например, процедура обработки события позволяет открыть другую форму при нажатии кнопки в форме.
Примечание. При создании объекта с помощью мастера часто автоматически создаются процедуры обработки событий для данного объекта. Для того чтобы понять, как работают процедуры, полезно ознакомиться с такими процедурами, просмотрев их в окне редактора Visual Basic.
Процедура-функция Function (часто такие процедуры называют просто функциями) возвращает значение, например, полученное в результате расчетов. Visual Basic включает ряд встроенных функций; например, функция Now возвращает текущее значение даты и времени. Выражения, содержащие функции, широко используются в Microsoft Access, например, в аргументах инструкций или методах Visual Basic, при указании значений свойств и при определении условий в запросах или фильтрах. В дополнение к встроенным функциям пользователь имеет возможность самостоятельно создавать функции, которые называют специальными или пользовательскими функциями.
Ниже приводится пример процедуры Function с именем «НачалоСледующегоМесяца», которая возвращает дату первого дня следующего месяца:
Function НачалоСледующегоМесяца()
НачалоСледующегоМесяца=DateSerial(Yеаг(Now), Month(Now) +1,1)
End Function
Данная функция состоит из единственной инструкции присваивания, в которой результат выражения (стоящего справа от знака равенства) присваивается функции «НачалоСледующегоМесяца» (имя которой стоит слева от знака равенства). Результат рассчитывается с помощью встроенных функций Visual Basic DateSerial, Year, Now и Month.
После создания функции ее можно использовать в Microsoft Access в любых выражениях. Например, чтобы сделать дату первого дня следующего месяца значением, которое поле получает по умолчанию, следует в окне свойств определить свойство этого поля Значение по умолчанию (DefaultValue) с помощью следующего выражения: =НачалоСледующегоМесяца().
Примечание. Для того чтобы использовать функцию в качестве значения свойства, ее необходимо поместить в модуль формы или отчета или в стандартный модуль. Нельзя использовать в виде значения свойства формы или отчета функцию в модуле класса, не связанном с формой или отчетом.
Процедуры Sub и Function могут принимать аргументы.
Создание пользовательских процедур Visual Basic для приложений. Используя в базе данных процедуры Visual Basic, можно управлять взаимодействием таблиц, форм, отчетов и запросов этой базы данных. Существует несколько типов процедур. Можно создать процедуру обработки события, добавив ее код в предопределенные шаблоны в модуле формы или модуле отчета. Можно также создавать собственные процедуры Function и процедуры Sub в стандартных модулях или в модулях класса (которые содержат модули форм и отчетов).
Процедуры, содержащиеся в стандартном модуле или модуле класса, могут быть вызваны из выражений, из других процедур, из процедур обработки событий, из процедур в других стандартных модулях или из макросов. Процедуры обработки событий вызываются автоматически в ответ на события (например, щелчок мыши), возникающие в форме, отчете или элементе управления.
Создание пользовательской функции. Для создания пользовательской функции откройте модуль. Чтобы открыть новый стандартный модуль, щелкните в окне базы данных ярлык Модули в списке Объекты, а затем нажмите кнопку «Создать» на панели инструментов окна базы данных. Для того чтобы открыть существующий стандартный модуль, щелкните ярлык Модули в списке Объекты, выберите модуль, который требуется открыть, а затем нажмите кнопку «Конструктор». Чтобы открыть модуль формы или модуль отчета, откройте форму или отчет в режиме конструктора и нажмите кнопку «Программа» на панели инструментов.
Чтобы открыть новый модуль класса, не связанный с формой или отчетом, выберите команду Class Moduleв меню Insert. Для того чтобы открыть существующий модуль класса, щелкните ярлык Модули в списке Объекты, выберите модуль, который требуется открыть, а затем нажмите кнопку «Конструктор» на панели инструментов окна базы данных.
Объявите функцию, введя инструкцию Function. Введите имя функции, а следом все аргументы функции в круглых скобках. Например, следующая инструкция описания функции IsLoaded указывает строковый аргумент strFormName: