Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Тема 5. Модули как объекты Access



ПЛАН

 

Стандартные модули. 62

Модули класса. 63

Создание модулей. 65

Ссылки на объект Module. 66

Код VBA в приложении Access содержится в модулях. Модули являются объектами Access, такими же как таблицы, запросы, формы, отчеты, страницы и макросы, о чем свидетельствует ярлык на панели объектов в окне База данных (Database). Ос­новное содержание модулей — это процедуры на языке VBA. Существует два типа модулей: стандартные модули и модули класса.

Стандартные модули

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

Список стандартных модулей приложения всегда можно увидеть, нажав кнопку Модули (Modules) в окне База данных (Database). В этом окне обычно и выполняется работа с модулями.

Пример (изображен на рисунке 1) универсальной функции, которая проверяет, загружена ли форма, имя которой передается ей в качестве аргумента. Она никак не связана не только с объ­ектом, но и с данным приложением и может использоваться как в нем самом, так и в любом другом приложении Access.

Рис . 1. Функция IsLoaded



Модули класса

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

Модули форм и отчетов связаны с конкретной формой или отчетом и содержат процедуры обработки событий для этой формы или отчета. Модуль формы не созда­ется сразу при создании новой формы. Он создается и связывается с формой, как только вы попытаетесь создать первую процедуру обработки событий для этой фор­мы или одного из элементов управления формы или же нажмете кнопку Программа (Code) в окне Конструктора формы.

Чтобы убедиться в этом, откройте любую форму БД в режиме Конструктора и посмотрите свойства этой формы. На вкладке Другие (Others) есть свойство Наличие модуля (Has Module). Оно должно иметь значение Нет (No). После нажатия кнопки Программа (Code), которая служит для открыва­ния редактора кода VBA, значение этого свойства изменится на Да (Yes) (рис. 2).

Рис . 2. Диалоговое окно свойств формы

В окне редактора VBA отображается объект Form (Форма), а справа — поле со спи­ском событий, которые могут обрабатываться процедурами VBA (рис. 3).

Если в модуле для некоторого события существует процедура, то это событие выде­ляется в списке жирным шрифтом. В данном случае таких событий нет, т. к. обра­ботка событий в форме Клиенты (Customers), которую мы открыли, выполняется с помощью макросов. При попытке открытия редактора VBA автоматически создается модуль формы, который будет иметь название Form_клиенты (Form_Customers).

Если теперь закрыть окно редактора кода, а затем форму, то, хотя мы не вносили никаких изменений в форму, на экране появится вопрос: Сохранить изменения макета или структуры формы Клиенты? (Do you want to save changes to the design of form 'Customers'?) Вопрос связан с появлением модуля формы. Если вы ответите Нет (No), модуль не будет сохранен.

Для того чтобы из программы VBA открыть форму и изменить какие-либо свойства формы или ее элементов управления, можно использовать два метода:

· Макрокоманду OpenForm, как метод объекта DoCmd, например:

DoCmd . OpenForm " Товары "

Forms [ Товары . RecordSource = " Товары клиента "

Ссылку на соответствующий модуль класса, например:

Form_Toвapы. Visible = True

Form!Toвapы.RecordSоurce = "Товары клиента"

В том и в другом случае при выполнении открывается стандартный экземпляр фор­мы Товары (Products) и подменяется источник записей для этой формы.

VBA позволяет открывать сразу несколько экземпляров класса формы. Это может потребоваться, например, когда хотят показать в разных окнах головную организа­цию и дочернюю фирму. Информация о той и другой может храниться в разных записях одной таблицы, и вам необходимо открыть два экземпляра одной формы с разными записями в каждом экземпляре.

Класс формы может иметь только один стандартный экземпляр, поэтому в данном случае придется создать нестандартный экземпляр формы. Для этого в программе нужно описать переменную, типом которой является имя модуля класса формы, при этом в описание переменной включить ключевое слово New. Например, следующая команда создает новый экземпляр формы клиенты (Customers) и связывает его с пе­ременной типа Form:

Dim frm As New Form_Клиенты

Теперь изменим источник данных для этой формы, расположение на экране (иначе формы просто перекроются) и присвоим свойству Вывод на экран (Visible) значение Да (Yes):

frm.RecordSource = "Наша организация"

DoCmd . MoveSize 1440, 2400

frm.Visible = True

Рис . 3. Окно редактора кода VBA

Для изменения положения на экране используется макрокоманда MoveSize (СдвигРаз-мер), в которой в данном случае задаются координаты верхнего левого угла окна формы относительно главного окна Access.

(    Замечание     )

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

Значения свойств формы или элементов управления формы относятся только к те­кущему экземпляру формы и не сохраняются после того, как он закроется. Это яв­ляется отличием модуля класса от стандартного модуля: они по-разному хранят данные. В стандартном модуле можно объявить переменную Public, и она, будучи установлена, сохраняет свое значение до тех пор, пока явно не будет изменена дру­гой командой в любом другом модуле. В модуле класса данные относятся к одному экземпляру класса, т. е. одному объекту. Они появляются, когда объект создается, и исчезают, когда исчезает объект. Это означает, что переменные Public в модуле класса могут быть доступны только до тех пор, пока существует переменная, содер­жащая ссылку на отдельный экземпляр класса. Это утверждение справедливо также для процедур, объявленных Public.

Формы и отчеты являются стандартными классами объектов в Access, однако можно использовать модули класса для создания пользовательских объектов. Имя, под ко­торым сохраняется модуль класса, становится именем специального объекта. Про­цедуры типа sub и Function, определенные в модуле класса, при этом станут мето­дами объекта, а процедуры типа Property Let, Property Get и Property Set — свойствами объекта. Для описания метода, не возвращающего никакого значения, используется процедура Sub, а для метода, возвращающего значение, — процедура Function. Процедура Property Get возвращает значение свойства объекта. Процеду­ра Property Set присваивает значение свойству объекта. Процедура Property Let устанавливает значение свойства, не принадлежащего объекту.

Более детальные сведения об этих процедурах можно получить из справки Visual Basic в окне редактора кода, набрав в качестве критерия поиска имя процедуры: Property Let, Property Get И Property Set, соответственно.

Точно так же, как и в модуле формы, новый экземпляр объекта создается путем объявления переменной, например:

Dim с ls As New MyClass

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

с ls . MyProcedure

Создание модулей

Для того чтобы создать стандартный модуль или модуль класса, нужно:

1. Выбрать команду Модуль (Module) или Модуль класса (Class Module) в меню Вставка (Insert) или в списке кнопки Новый объект (New Object) выбрать соответствующий объект (рис. 4). При этом откроется редактор кода VBA с пус­тым окном модуля.

2. Создать необходимые процедуры и описания.

3. Сохранить модуль, нажав кнопку Сохранить (Save) на панели инструментов. При
этом выдается диалоговое окно Сохранение (Save), в котором необходимо ввести
имя нового модуля и нажать кнопку ОК.

После этого новый модуль появляется в списке модулей окна базы данных. Чтобы его открыть, можно нажать кнопку Конструктор (Design) окна базы данных. Если у вас открыты форма или отчет в режиме Конструктора, то для того чтобы открыть модуль формы (отчета), следует нажать кнопку Программа (Code) на панели инст­рументов.



Рис . 4. Создание нового модуля

Ссылки на объект Module

Для обращения к модулям в программах VBA используется семейство Modules, ко­торое содержит все открытые объекты типа Module. Дая того чтобы открыть объект Module, можно использовать макрокоманду OpenModule (ОткрытьМодуль). Ссылка на модуль может быть создана тремя способами:

· имяСемейстза!имяОбъекта — например Modules!Startup;

· имяСемейства ("имяОСъекта") — например Modules ("Startup");

· имяСемейства (индекс), где индекс— индекс объекта в семействе.

Для ссылки на модуль формы или отчета можно использовать или имя модуля, на­пример Modules!Form_Kлиенты, или свойство формы, например Forms!Клиенты.Module.

Объект Module имеет свойство Туре. Значение этого свойства определяет тип моду­ля: для стандартного модуля используется значение 0, для модуля класса — 1

 

Список літератури

1. Самоучитель Microsoft Office XP : Пошаговая интерактивная обучающая система. – М. : КомпактБук ; Новый Диск, 2004.

2. Гайдамакин Н.,Автоматизированные информационные системы, базы и банки данных: Вводный курс ,Гелиос, 2002, Р

3. Гаврилова Т.,Базы знаний интеллектуальных систем ,СПб., 2001, Р

4. Кренке Д.,Теория и практика построения баз данных ,Питер, 2003, Р

5. Хомоненко А.,Базы данных ,СПб., 2000, Р

6. Хомоненко А.,Базы данных ,СПб., 2004, Р

7. Пасічник В.В.,Організація БД і знань,«Знання», 2008, у

8. Гайна Г.М.,Основи проектування баз даних. Навч.пос.,«Центр навчальної літератури», 2007, У

 


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 357; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.028 с.)
Главная | Случайная страница | Обратная связь