Как видно из этой таблицы, в модели 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 для удаления таблицы из семейства;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.