Главная
страница 1
Лекция 16: Программирование на языке VBA

Вопрос 1. Объекты и семейства VBA

Язык VBA является объектно-ориентированным языком программирования. Стандартные объекты VВА представляют собой основные средства манипуляции с данными Microsoft Access и других приложений семейства Microsoft Office. Знание технологии объектно-ориентированного программирования и состава объектных моделей VBA позволяет разрабатывать профессиональные приложения, выполняющие всю необходимую обработку данных.



Объект — абстракция, которой оперирует в объектно-ориентированных языках программирования. Объект обладает собственными характерными признаками, отличающими его от ДРУГИХ объектов: кроме того, объект имеет свое поведение.

Класс - описание совокупности однотипных объектов. Класс можно сравнить с типом данных, где переменной является объект. В этом случае говорят, что объект представляет собой экземпляр определенного класса.

Метод — отдельная характеристика объекта или класса. Свойство объекта может принимать определенное значение.

Метод — процедура (или функция) объекта или класса. У объекта или класса может быть определенное количество методов и свойств. Методы определяют поведение объекта. В объектно-ориентированных языках программирования поведение приложения определяется поведением созданных в нем объектов.

Объект может реагировать на определенное событие (event), происходящее в процессе работы приложения и влияющее на объект. Совокупность событий, на которые объект способен реагировать, определяется создателем класса, экземпляром которого является данный объект. Реакцией объекта на произошедшее событие может быть выполнение им некоторых заданных действий — специальной процедуры, которая называется процедурой обработки события. Любому событию объекта может быть назначена некоторая процедура его обработки.



Семейство (collection) — упорядоченный набор однотипных объектов, т.е. экземпляров одного класса. Семейство тоже является объектом, и одним из методов этого объекта является процедура, возвращающая ссылку на конкретный объект в семействе. Одним из свойств семейства является число объектов, хранящихся в нем.

Объектная модель (object model) — совокупность взаимосвязанных объектов, описывающих программную систему.

В VBA определены специальные объектные модели для каждого компонента семейства Microsoft Office и объектные модели, общие для всех компонентов Microsoft Office. С помощью объектных моделей, определенных в VВА осуществляется управление приложениями Microsoft Office.



В базе данных Microsoft Access могут храниться такие объекты, как таблицы, запросы, формы, отчеты, макросы и модули, а также ссылки на объекты — страницы доступа к данным. В проекте Microsoft Access могут храниться такие объекты, как формы, отчеты, макросы и модули, ссылки на страницы доступа к данным, а также ссылки на объекты, хранящиеся в базе данных на SQL-сервере (таблицы, представления, диаграммы базы данных и хранимые процедуры). Страница доступа к данным представляет собой Web-страницу, хранящуюся отдельно от БД или проекта Microsoft Access . В базе данных или проекте хранится только ссылка на страницу доступа к данным в виде ярлыка (подобного ярлыку файла Windows). Доступ к объектам, хранящимся в приложении Microsoft Access, осуществляется с помощью окна базы данных или проекта.

К постоянным объектам (содержащимся в базе данных или проекте Access) относятся подчиненные объекты, например элементы управления в форме, отчете, на странице доступа к данным. Кроме постоянных объектов бывают временные объекты, т.е. объекты ВА, которые существуют только в период времени выполнения приложения.

Создание объектов в Microsoft Access осуществляется интерактивно или программно.

Чтобы изменить свойства объекта, достаточно щелкнуть правой кнопкой мыши по нему; (например, по таблице в окне базы данных или проекта Access и выбрать в контекстном меню команду Свойства (Properties). Появится окно свойств объекта, представленное на рис.16.1.

Рис. 16.1. Окно свойств объекта приложения Access

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

Другие свойства объектов можно изменить только программно, т.е. с помощью макроса или процедуры VBA.

Программный доступ к постоянным (хранимым в приложении Access) и временным объектам (осуществляется с помощью объектных моделей VBA.



Объектная модель Microsoft Access реализована в виде набора объектов собранных в библиотеке Access (рис.). Основным элементом в иерархии объектов библиотеки Access является объект Application, который содержит ссылки на все объекты и семейства объектов Microsoft Access. Каждый объект из библиотеки Access имеет в качестве свойства объект Application, который ссылается на активное приложение Microsoft Access.

Каждый объект может содержать набор свойств, часть из которых может являться ссылками на другие объекты.



Рис. 16.2. Окно просмотра объектов

В каждый новый уровень иерархии входят объекты, ссылки на которые хранятся в объектах, расположенных на предыдущем уровне.

Если свойство объекта представляет собой ссылку на объект, определенный в другой библиотеке (не в библиотеке Access), для него приводится название этой библиотеки.

Для доступа к некоторым объектам можно использовать сокращенную ссылку, содержащую только имя объекта. Дело в том, что определенные объекты, свойства и методы считаются глобальными. Ссылки на них хранятся в специальном объекте с именем Global. Узнать, какие свойства и методы являются глобальными, позволяет окно просмотра объектов (рис. 16.2). Чтобы отобразить список глобальных компонентов объектной модели, следует выбрать элемент globals в списке Classes в окне просмотра объектов.

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

В табл. 16.1 приведено описание объектов Microsoft Access, определенных в библиотеке Access (если не указана другая библиотека объектов).

В Microsoft Access 97 для программного доступа к базе данных используется объект Database из библиотеки ОАО (объекты доступа к данным). Ссылку на этот объект возвращают, например, методы CurrentDb и CodeDb объекта Application, отличающиеся друг от друга. Первый метод возвращает ссылку на объект Database, который представляет собой текущую базу данных Microsoft Access, а второй метод возвращает ссылку на объект Database, представляющий собой ту базу данных, в которой выполняется код VBA, содержащий вызов метода CodeDb. Метод CodeDb целесообразно ис пользовать в процедурах библиотек Access, так как вызовом такой процедуры можно получить доступ к библиотечной базе данных.

В Microsoft Access 2000 у объекта Application появились новые свойства: CurrentProject, CurrentData, CodeProject и CodeData, позволяющие манипулировать объектами базы данных. Теперь вместо объекта Database из библиотеки DAO для работы с базой данных или проектом Access можно использовать объекты CurrentProject^ CurrentData, CodeProject и CodeData из библиотеки Access.

Пары объектов CurrentProject, CodeProject и CurrentData, CodeData имеют одинаковые свойства и методы. Отличие объектов CurrentProject и CurrentData от CodeProject и CodeData подобно отличию друг от друга объектов, возвращаемых методами CurrentDb и CodeDb. Объекты CurrentProject и CurrentData соответствуют текущей базе данных, а объекты CodeProject и CodeData — базе данных, в которой выполняется (и содержится) код VBA, содержащий ссылки на эти объекты.

Таблица 16.1

Описание составляющих объектной модели Microsoft Access



Объект

Тип

Описание

Application

Объект

Ссылается на активное приложение Microsoft Access. Используется для управления приложением. Этот объект является СОМ-компонентом и -может быть использован другим приложением, которое поддерживает Automation

Forms

Семейство

Содержит объекты Form, соответствующие всем открытым в данный момент формам в БД Access

Form

Объект

Ссылается на конкретную форму Access, описывает свойства формы, элементы управления и модуль, содержащий процедуры формы. Каждый объект Form содержит в качестве свойства по умолчанию семейство Controls, представляющее собой элементы управления данной формы. Следовательно, доступ к элементам управления формы может осуществляться двумя способами — явно (как к элементу семейства Controls) и неявно (как к элемент) объекта Form):

1. Forms!Заказы.Соntrols!НомерЗаказа

2. Forms!Заказы!НомерЗаказа


Reports

Семейство

Содержит объекты Report, соответствующие всем открытым в данный момент отчетам в БД Access

Report

Объект

Ссылается на конкретный отчет Access, описывает свойства отчета, элементы управления и модуль, содержащий процедуры отчета. Доступ к элементам управления отчета осуществляется с помощью семейства Controls (свойства по умолчанию) двумя способами — явно и неявно.













Modules

Семейство

Содержит объекты Module, соответствующие всем открытым в данный момент стандартным модулям и модулям объектов в БД Access

Module

Объект

Ссылается на конкретный стандартный модуль или модуль класса Access, описывает содержимое модуля в строках кода.

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



References

Семейство

Содержит объекты Reference, представляющие собой установленные ссылки в приложении Access. С помощью данного семейства в приложении можно динамически устанавливать или удалять ссылки на внешние библиотеки

Reference

Объект

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

DataAccessPages

Новое

Содержит объекты DataAccessPages,




семейство

соответствующие открытым в данный момент страницам доступа к данным в БД или проекте Access

DataAccessPage

Новый объект

Ссылается на конкретные страницу доступа к данным Access. Описывает свойства страницы

Screen


Объект

Ссылается на конкретные форму, отчет или элемент управления, которые в данный момент имеют фокус


DoCmd Объект Позволяет выполнить макрос или встроенную инструкцию Access с

помощью процедуры на vba









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

Новый объект

из библиотеки

VBIDE



DefaultWebOptions

Новый объект

Предоставляет доступ к атрибутам приложения, используемым в Access по умолчанию при открытии и сохранении Web-страниц

WebOptions

Новый объект

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

Если атрибуты страницы доступа к данным изменяются, то автоматически такие же значения получают атрибуты приложения. Следовательно, полезно сохранять текущие атрибуты приложения, чтобы восстанавливать их после изменения атрибутов страницы доступа к данным















DBEngine

Объект из библиотеки

Является объектом самого верхнего уровня в объектной модели DAO.

Позволяет использовать объекты доступа к данным в приложении Access






DAO

CurrentProject

Новый объект

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



















CurrentProject

Новый объект

Этот объект содержит семейства объектов AccessObjects, соответствующих реальным объектам базы данных или проекта: AllForms, AUReports, AUMacros, AllModules, AllDataAccessPages. Перечисленные семейства содержат все реальные объекты БД независимо от того, открыты они или закрыты в данный момент

CurrentData

Новый объект

Ссылается на объекты, сохраненные приложением — источником данных (ядром Jet или SQL-сервером) в текущей базе данных. Содержит семейства объектов AccessObject: AllTables, AllQueries, AllViews, AllSto-redProcedures, AllDatabaseDiagrams. Перечисленные семейства содержат все реальные объекты БД, независимо от того, открыты они или закрыты в данный момент

CodeData

Новый объект

AllTables, AllQueries, AllViews, AllStoredProcedures, AllDatabase-Diagrams. Перечисленные семейства содержат все реальные объекты базы данных независимо от того, открыты они или закрыты в данный момент

Controls

Семейство


Содержит объекты Control, представляющие собой все элементы управления в конкретных форме, отчете или секции. Это семейство является свойством объектов Form, Report, Section и Control

Control

Объект

Представляет собой любой конкретный элемент управления в форме, отчете или секции. Может ссылаться на один из объектов, характеризующих элемент управления определенного типа: CheckBox, TextBox, Combo Box, Command Button, CustomControl, BoundObjectFrame, Image, ListBox, ObjectFrame, OptionButton, Option-Group, Page, Section, SubForm, TogleButton

Format Conditions

Новое

семейство



Содержит объекты FormatCondition и представляет собой набор форматов по условию для объектов Text-Box и ComboBox

Format Condition

Новый объект

Представляет собой форматирование по условию, определенное для элемента управления типа поле ввода (объект TextBox) или список с полем ввода (объект ComboBox)

All Forms

Новое

семейство



Содержит объекты AccessObject и представляет собой все формы в объектах CurrentProject и Code Project


AllReports

Новое

семейство



Содержит объекты AccessObject и представляет собой все отчеты в объектах CurrentProject и CodeProject

AllDataAccessPages

Новое

семейство



доступа к данным в объектах Cur-rentProject и CodeProject

All Macros

Новое семейство

Содержит объекты AccessObject и представляет собой все макросы в объектах CurrentProject и CodeProject

All Modules


Новое семейство

Содержит объекты AccessObject и представляет собой все профам-мные модули в объектах Current-Project и CodeProject

AllTables

Новое

семейство



Содержит объекты AccessObject и представляет собой все таблицы в объектах CurrentData и Code Data

AllQueries

Новое семейство

Содержит объекты AccessObject и представляет собой все запросы в объектах CurrentData и Code Data. При этом количество запросов в проекте Access должно равняться нулю

All Views

Новое

семейство



Содержит объекты AccessObject и характеризует все представления в объектах CurrentData и Code Data. При этом количество представлений в базе данных Access должно равняться нулю

AllStoredProcedures

Новое семейство

Содержит объекты AccessObject и представляет собой все хранимые процедуры в объектах CurrentData и Code Data. При этом количество хранимых процедур в базе данных Access должно равняться нулю

AllDatabaseDiagrams

Новое семейство

Содержит объекты AccessObject и представляет собой все схемы базы данных в объектах CurrentData и CodeData. При этом количество схем базы данных в БД Access должно равняться нулю

AccessObject


Новый объект

Ссылается на реальный объект Wicrosoft Access в любом из следуюцих семейств: AllForms, AllReports, \llMacros, AllModules, AllDataAccessPages, AllTables.

AccessObject


Новый объект

AllViews, All Stored Procedures, All-DatabaseDiagrams. В зависимости от того, к какому семейству он принадлежит, представляет собой любой из объектов Access — таблицу (Table), запрос (Query), отчет (Report), форму (From), модуль (Module), макрос (Macro), страницу доступа к данным (Dataaccess page), представление (View), хранимую процедуру (Stored procedure) или схему базы данных (Database diagram).

Объект AccessObject ссылается на существующий объект базы данных. При этом нельзя создать новый или удалить существующий объект AccessObject



AccessObjectPro-

perty


Новое

семейство



Содержит настраиваемые объекты

семейства AccessObjectProperty, описывающие свойства и однозначно характеризующие конкретные объекты: AccessObject, Code-Data, CodeProject, CurrentData или CurrentProject




Смотрите также:
Лекция 16: Программирование на языке vba
133.64kb.
1 стр.
Рабочая программа дисциплины программирование на языке C# Направление (специальность) подготовки
97.36kb.
1 стр.
Программа курса «Программирование на языке С++»
31.04kb.
1 стр.
2 Программирование на языке высокого уровня
4806.37kb.
29 стр.
Лекция №1 2 Лекция №2 8 Лекция №3. 13 Лекция №4 14 Лекция №24 Лекция №7 24 Конспект лекций по курсу
316.67kb.
1 стр.
Сервер Oracle 10g. Разработка баз данных и программирование на языке sql
44.14kb.
1 стр.
Курсовая работа по курсу «Программирование» Тема работы: «Разработка приложения с графическим интерфейсом на языке программирования С++ с использованием библиотеки qt»
108.12kb.
1 стр.
Лекция 10. Декларативное программирование
81.77kb.
1 стр.
Методические указания к курсовой работе Волгоград 2009 (07) п 78
281.49kb.
1 стр.
Вопросы к экзамену по дисциплине «Программирование»
44.17kb.
1 стр.
Б. Н. Ельцина Кафедра «Электронное машиностроение» Программирование контроллера Simatic S7-300 Программирование панели человеко-машинного интерфейса tp-177a методические указания
264.74kb.
1 стр.
Программирование 3 История развития программирования 4
382.12kb.
2 стр.