Другой большой класс объектов, используемых из программ VBA, составляют объекты доступа к данным. С помощью объектов доступа к данным обеспечивается взаимодействие VBA и ядра базы данных Jet. К объектам непосредственного доступа к данным относятся таблицы, запросы, связи, индексы. Объекты DAO обеспечивают доступ и обработку данных в базах данных, управление базами данных и их объектами с помощью свойств и методов, а также позволяют создавать новые объекты, изменять структуру базы данных. На верху модели объектов доступа к данным стоит объект DBEngine, представляющий ядро базы данных. В него входят объекты, представляющие рабочие области – Workspace. Каждая рабочая область Workspace, в свою очередь, включает семейство из одного или нескольких объектов баз данных – Database. Каждый объект Database содержит семейство из одного или нескольких объектов-таблиц – TableDef, запросов – QueryDef, наборов записей – Recordset и т.д. (рис.7.2). Таким образом, каждый объект может содержать семейства более низкого уровня в иерархии.
Workspace
|-----Databases
|-----Database
|-----TableDefs
|-----Containers
|-----QueryDefs
|-----Recordsets
|-----Relations
Рис. 1.2. Модель объектов доступа к данным
Работа с открытой базой данных ведется с помощью объекта Database и его методов и свойств. Например, используя для объекта метод OpenRecordset, можно выполнить запрос на выборку и создать объект Recordset; используя методы CreateTableDef и CreateRelation – создать таблицы и связи.
Семейство Recordsets содержит все открытые объекты Recordset (рис.1.3). Каждый объект Recordset включает семейство полей Fields. Объекты Recordset используются для обработки данных в базе данных на уровне записи. При работе с объектами доступа к данным почти все операции выполняются с помощью объектов Recordset.
Существуют объекты Recordset нескольких типов, в том числе:
объект Recordset типа таблицы – это представление таблицы базы данных, которое используется для добавления, изменения или удаления записей из нее;
объект Recordset типа динамического набора записей – это набор обновляемых записей, полученный в результате выполнения запроса. В объекте Recordset этого типа могут содержаться поля из одной или нескольких таблиц базы данных. Этот объект используется для добавления, изменения или удаления записей в одной или нескольких таблицах.
Новый объект Recordset автоматически добавляется в семейство Recordsets при открытии объекта и автоматически удаляется из семейства при закрытии объекта. Если созданный объект Recordset содержит записи, то текущей становится первая запись. Изменить положение указателя текущей записи позволяют методы MoveNext, MovePrevious, MoveFirst, MoveLast. При выполнении цикла по всем записям с помощью методов Move свойства BOF и EOF используются для проверки начальной и конечной границ объекта Recordset.
Семейство TableDefs содержит объекты TableDef с определениями таблиц базы данных. Объект TableDef включает два семейства: полей – Fields и индексов – Indexes (рис.7.3).
Recordsets TableDef
|--Recordset |--Indexes
|--Fields |--Index
|--Field |--Fields
|--Field
Рис. 1.3. Иерархия семейства и объектов таблицы и набора записей
Заметим, что семейство Fields содержит сохраненные объекты Field не только объекта TableDef, но и объектов Index, QueryDef, Recordset, Relation.
Семейство Fields объектов TableDef, Index, QueryDef, Relation содержит спецификации полей, входящих в эти объекты. Семейство Fields объекта Recordset представляет объекты Field, содержащиеся в записи. Объекты Field, входящие в объект Recordset, используются для чтения и задания значений полей в текущей записи объекта Recordset. Объект Index задает упорядочивание и однозначность значений, с помощью которых обеспечивается эффективный доступ к записям в таблицах.
Объекты доступа к данным используются как для работы с базами данных, имеющими формат .mdb, так и для доступа к таким базам данных, как FoxPro, dBASE, Paradox или к таблицам Excel, текстовым файлам. Кроме того, методы объектов доступа к данным обеспечивают доступ к серверу Microsoft SQL Server и другим базам данных, поддерживающим драйвер ODBC.
Объекты доступа к данным можно использовать в программах VBA, только если установлена ссылка на библиотеку DAO.Она устанавливается в окне редактора VBA, где командой Сервис/Ссылки (Tools|References) открывается окно со списком доступных ссылок и устанавливается флажок Microsoft DAO 3.6 Object Library.
Для объектов приложения Access устанавливается флажок Microsoft Access 9.0 Object Library.