.Properties("Jet OLEDB:Create Link") = True .Properties("Jet OLEDB:Link Datasource") = _
"Библиотека (данные)"
.Properties("Jet OLEDB:Remote Table Name") = "Издания" End With
' добавляем таблицу к семейству Tables
cat.Tables.Append tbl
Set cat = Nothing
End Sub
В данном примере используется свойство ParentCatalog объекта Table. Это родительский каталог, то есть объект Catalog, который содержит данную таблицу.
Аналогично могут быть присоединены таблицы из источников данных других форматов: ISAM и ODBC. Но в модели ADO вместо свойства Jet OLEDB:Link Data-source устанавливается значение свойства Jet OLEDB:Link Provider String. Значением этого свойства является строка соединения.
СОВЕТ Чтобы правильно составить строку подключения, которая может быть достаточно длинной, можно воспользоваться следующим приемом. Присоедините нужную таб лицу с помощью команды меню Файл > Внешние данные > Связь с таблицами (File > Get External Date > Link Tables). Потом откройте эту таблицу в режиме Конструктора и откройте диалоговое окно Свойства таблицы (Table Properties) (команда Вид > Свойства (View > Properties)). Свойство Описание (Description) будет содержать строку подключения, которой вы можете воспользоваться.
Работа с индексами
Программным путем, используя объектные модели, можно создавать индексы и первичные ключи таблиц. Для этого создаются объекты Index, которые образуют семейства Indexes объектов TableDefs и Tables в разных моделях. Способы создания индексов очень похожи в той и другой модели, однако свойства объекта Index различаются. Объект Index в DАО имеет свойства Required и IgnoreNulls, значения которых по умолчанию равны False. Это означает, что в полях индекса разрешены пустые значения (Null). Объект Index в ADOX имеет только одно свойство IndexNulls. По умолчанию это свойство имеет значение adlndexNullsDisallow. Это значит, что по умолчанию значения Null в индексных полях запрещены. В объектной модели DАО для создания индекса таблицы используется метод Createlndex объекта TableDefs. После того как создан объект Index, нужно создать и добавить поля (одно или несколько) в семейство Fields этого объекта, а потом сам объект Index добавить в семейство Indexes объекта TableDef. В листинге 5.18 приводится пример создания индекса для полей Фамилия и Имя таблицы Персонал.
Листинг 5.18. Создание индекса (DАО)
Dim db As Database, td As TableDef, fid As Field
Dim idx As Index
Set db = CurrentDB
Set td = db.TableDefзС'Персонал")
With td
'создание индекса
Set idx = .CreatelndexC'OaMnnHflklMfl")
With idx
'добавление полей в индекс
.Fields.Append .CreateField("Фамилия")
.Fields.Append .CreateField("Имя")
End With
'добавление индекса в семейство Indexes объекта TableDef
.Indexes.Append idx
End With
db.Close
Листинг 5.19. Создание индекса (ADO)
Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table
Dim idx As ADOX.Index
Set cat = New ADOX.Catalog
' открываем каталог к базе данных, в которой будем создавать индекс.
cat.ActiveConnection = _
"Provider=Microsoft.Jet.OLEDB.4.9;" & _
"Data 5оигсе=С:\Библиотека.mdb"
Settbl = cat .ТаЫезС'Персонал")
'создаем объект Index и добавляем к нему поля таблицы
Set idx = New ADOX.Index
With idx
.Name = "ФамилияИмя"
.Columns.Append "Фамилия"
.Columns.Append "Имя"
End With
'добавляем объект Index к семейству Indexes tbl.Indexes.Append idx Set cat = Nothing
При создании первичного ключа перед добавлением объекта Index в семейство dexes установите значение его свойства PrimaryKey равным True.
Создание, изменение и выполнение запроса
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.