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

.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.

Создание, изменение и выполнение запроса