Организация обмена данными между компонентами сетевого приложения


Существует несколько способов обмена данными между компонентами приложения по сети:

  • с помощью связанных таблиц;
  • с помощью запросов;
  • с помощью программирования на VBA.

Использование запросов и связанных таблиц подробно рассмотрено в других главах этой книги. Мы остановимся на программном доступе к базам данных с использованием интерфейса DАО.
 
Программирование с использованием интерфейса DАО
Объекты доступа к данным (DАО, Data Access Object) — это иерархия объектов, обеспечивающая доступ к структуре базы данных и ее содержимому. В программах Visual Basic пользователь имеет возможность использовать объектный интерфейс DАО для выполнения следующих задач:

  • осуществления доступа к данным в локальных и удаленных базах данных Access и внешних источниках;
  • управления базой данных и ее объектами;
  • изменения структуры таблиц и схемы данных;
  • управления системой защиты;
  • создания, настройки и синхронизации реплик.

Интерфейс DАО использует рабочие области двух видов:

  • Рабочая область ядра Jet. Обеспечивает доступ к базам данных процессора обработки данных Jet, источникам данных ODBC и источникам данных ISAM для % доступа к базам данных в других форматах (например, к базам данных Lotus 1-2-3). Рабочая область Jet используется для доступа к источникам данных с помощью процессора Jet.
  • Рабочая область ODBCDirect. Обеспечивает доступ к источникам данных ODBC напрямую, не используя процессор Jet.

Для рабочей области Jet и для рабочей области ODBCDirect существуют две разные объектные модели DАО. Реализация модулей VBA для обмена данными между компонентами приложения "Игра в доминирование" основана на применении интерфейса DАО с использованием рабочей области ядра Jet. Поэтому в дальнейших примерах основное внимание уделено приемам программирования на DАО, применимым в рабочей области ядра Jet. Сведения о рабочей области ODBCDirect можно найти в справочной системе Access 2010.
В следующих разделах мы рассмотрим некоторые аспекты программирования с использованием DАО. Подробную информацию об интерфейсе DАО можно найти в справочной системе Access.
Внимание
В Access 2010 по умолчанию к программному проекту базы данных подключена библиотека Microsoft ActiveX Data Objects 2.1 Library. Чтобы использовать в процедурах VBA объекты доступа к данным, нужно обязательно отключить эту библиотеку и подключить библиотеку Microsoft DАО 3.6 Object Library.
 
Создание и использование рабочей области
Обе иерархии объектов DАО: для рабочей области Jet и для рабочей области ODBCDirect — начинаются с объекта DBEngine. Этот объект содержит свойства и методы, позволяющие управлять рабочими областями. Свойство DefaultType объекта DBEngine позволяет определять или устанавливать тип рабочей области, создаваемой по умолчанию.
Объект DBEngine в качестве свойства содержит семейство Workspaces всех открытых рабочих областей. Можно выбрать элемент этого семейства, указав индекс или имя, чтобы получить доступ к конкретной рабочей области.
Чтобы создать новую рабочую область ядра Jet или рабочую область ODBCDirect, используют метод CreateWorkspace объекта DBEngine с соответствующим параметром. Метод CreateWorkspace возвращает ссылку на объект типа workspace и имеет следующие параметры:
Workspace CreateWorkspace(<имя>, <пользователь>, <пароль>, <тип>)
Параметры метода CreateWorkspace

Параметр

Тип

Описание

<пользователь>

String

Имя пользователя, который будет владельцем создаваемой рабочей области. Определяет значение свойства UserName объекта Workspace

<пароль>

String

Пароль пользователя. Он необходим для создания рабочей области. Пароль может включать до 14 символов. Это могут быть любые символы, кроме символа ASCII с кодом 0 (Null). Определяет значение свойства Password объекта Workspace

<тип>

<константа>

Необязательный параметр. Задает тип создаваемой рабочей области. В качестве значения можно использовать константу dbUseJet для создания рабочей области ядра Jet или константу dbUseODBC для создания рабочей области ODBCDirect. По умолчанию создается рабочая область того типа, который задан значением свойства DefaultType объекта DBEngine

<имя>

String

Уникальное имя создаваемой рабочей области. Определяет значение свойства Name объекта Workspace

Несколько рабочих областей разных типов могут быть открыты одновременно. В момент создания рабочей области начинается сеанс работы с ней. После выполнения всех необходимых действий в рабочей области нужно завершить сеанс, закрыв рабочую область с помощью метода Close объекта Workspace.
Программа 16.1. Использование рабочей области Jet, открытой по умолчанию
Dim ws As Workspace
Dim db As Database
Set ws = DBEngine.Workspaces(0)
‘ Выбрали рабочую область
‘ Открываем базу данных:
Set db = ws.OpenDatabase ("DominationGameServer.mdb")
‘ Код использования базы данных …
db.Close ‘ Закрыли базу данных
Set db = Nothing
‘ Очистили объектную переменную
‘ (!) Плохой код:
‘ рабочая область, открытая по умолчанию, будет закрыта
‘ ws.Close
‘ Set ws = Nothing
Программа 16.2. Создание рабочей области Jet
Dim ws As Workspace
Dim db As Database
‘ Создаем рабочую область:
Set ws = CreateWorkspace("", "Флинт", "пиастры", dbUseJet)
‘ Открываем базу данных:
Set db = ws.OpenDatabase("DominationGameServer.mdb")
‘ Код использования базы данных …
db.Close ‘ Закрыли базу данных
ws. Close "’ : ‘ ‘ Закрыли рабочую область
Set db = Nothing " ‘ Очищаем объектные
Set ws = Nothing ‘ переменные