Программирование в ACCESS 2000, страница 6

Как видно из этой таблицы, в модели ADOX, как и в модели DAO, различаются вязанные таблицы из источников данных ISAM и ODBC. Если связанная таблица находится в базе данных ISAM, свойство Туре возвращает значение Link, если в базе данных ODBC, — значение Pass-Through.

В листинге 5.9 приводится пример получения списка таблиц базы данных Библиотека.mdb

Листинг 5.9. Печать имен и типов таблиц (ADO — вариант 1)

Dim cat As ADOX. Catalog                                                                                          

Dim tbl As ADOX.Table 'создаем объект Catalog

Set cat = New ADOX.Catalog

cat.ActiveConnection ="Provider=Microsoft.Jet.OLEDB.4.0; "_

                         & "Data Source=C:\Библиотека.mdb"

'печатаем имена и типы всех таблиц (запросов в этой базе данных нет)

For  Each tbl In cat.Tables

     Debug.Print  tbl.Name & vbTab & tbl.Type

Next

Setcat = Nothing

В этом примере используется другой метод создания объекта Catalog. Вместо использования метода Create, как это делалось в предыдущих примерах, сначала объявляется новый объект Catalog, а затем присваивается значение его свойству ActiveConnection. Затем объект Catalog используется для доступа к семейству Tables таблиц и запросов базы данных.

Обратиться к существующей таблице базы данных можно сразу после создания объекта Catalog, просто указав имя таблицы или ее индекс в семействе Tables, например:

Dim cat As  New ADOX.Catalog,   strName As  String

     cat.ActiveConnection = CurrentProject.Connection

strName = cat.Tables(0).Name

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

Альтернативным способом доступа к таблицам базы данных посредством объектов ADO является применение метода OpenSchema объекта Connection. Установив соединение с базой данных посредством объекта Connection, можно выполнить метод OpenSchema и получить объект Recordset, который содержит информацию о схеме данных источника, возвращаемую провайдером OLE DB. Синтаксис метода OpenSchema следующий:

Set <переменная> = <connection>.OpenSchema (<типЗапроса>, [<критерий>],

[<идентификаторСхемы>]), где <connection> представляет собой ссылку на объект Connection. Метод имеет один обязательный аргумент — <типЗапроса>. Это константа, которая определяет тип возвращаемой информации. Может возвращаться информация о таблицах, представлениях, процедурах, индексах и других объектах базы данных. Остальные аргументы необязательны. Их значения вы можете посмотреть в Справке Access (метод OpenSchema объекта Connection). Ниже приведен пример использования метода OpenSchema и провайдера Microsoft Jet 4.0 для получения списка таблиц в базе данных Библиотека.mdb (листинг 5.10).

Листинг 5.10. Печать имен и типов таблиц (ADO — вариант 2)

Dim cnn As  New ADODB.Connection

Dim  rstSchema As  ADODB.Recordset

'устанавливаем соединение с базой данных

     cnn.Open   "Provider=Microsoft.Jet.OLEDB.4.0;"  &_

     "Data  Source=C:\Библиотека.mdb

'создаем объект  Recordset

     Set  rstSchema = cnn.OpenSchema(adSchemaTables)

'выводим на  печать  имена  и типы таблиц базы данных

Do  Until   rstSchema.EOF

Debug.Print  "Имя  таблицы: " & rstSchema.Fields _

("TABLE_NAME")   &  " тип: "  & rstSchema.Fields _

       ("TABLE_TYPE")   & vbCr

  rstSchema.MoveNext

Loop

     rstSchema.Close

     cnn.Close

При переборе таблиц этот метод работает быстрее, чем цикл по всем объектам семейства Tables объектной модели ADOX.

Создание, изменение и удаление таблиц

Семейства TabteDefs и Tables имеют все стандартные свойства и методы семейства зектов:

·  свойство Count, возвращающее количество таблиц в семействе;

·  метод Append для добавления новой таблицы в семейство;

·  метод Delete для удаления таблицы из семейства;