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

·  метод Refresh для обновления семейства.

Это значит, что можно программным путем добавлять в базу данных таблицы и удалять их.

Алгоритм создания новой таблицы также одинаков в обеих моделях.

  1. Создается новый объект — таблица.
  2. Создаются все подчиненные объекты — поля таблицы, индексы, если нужно, и т.д.
  3. Все подчиненные объекты добавляются в соответствующие семейства,
  4. Главный объект — таблица — добавляется в семейство

Для создания нового объекта TableDef используется метод CreateTableDef объекта Database, который инициализирует объектную переменную, содержащую ссылку на  таблицу.

Синтаксис метода CreateTableDef:

Set <переменная> = <database>.CreateTableDef ([<имяТаблицы>], [<атрибуты>],

[источник>], [<соединение>]),

;database> — ссылка на объект Database.

Посольку все аргументы метода CreateTableDef являются необязательными, можно пускать, а затем при необходимости установить значения соответствующих свойств объекта TableDef.

Аргумент <имяТаблицы> представляет собой имя создаваемой таблицы. Аргумент <атрибуты> — это константа или комбинация констант, которая определяет характеристики создаваемой таблицы. Аргументы используются, если создается присоединенная таблица. Имя этой таблицы в текущей базе данных может отличаться от имени таблицы в базе данных-источнике, поэтому аргумент <источник> опрделяет имя таблицы в базе данных-источнике. Аргумент <соединение> представляет собой строку соединения, которая определяет тип и местонахождение источника данных, например, для таблицы Excel аргумент <соединение> может содержать значение "Excel 8.0; DATABASE=C:\TABLES\SUMMARY.XLS".

После того, как новая таблица создана, необходимо определить ее структуру, то есть свойства полей. Прежде чем добавить ее в семейство TableDefs, нужно определить хотя бы одно поле, в противном случае Access выдаст сообщение об ошибке.  Чтобы создать поле, используется метод CreateField объекта TableDef, который имеет следующий синтаксис:

Set <nepeменная> = <tableDef>.CreateField ([имя], [тип], [размер]).

Метод CreateField имеет три необязательных аргумента, позволяющие определить три свойства поля: имя, тип данных и размер. Поскольку аргументы не являются обязательными (как и при создании таблицы), их можно опустить, а позже установить соответствующие свойства объекта Field. Созданные поля нужно обязательно добавить в семейство Fields.

Когда структура таблицы определена, можно добавить ее в семейство TableDefs, используя метод Append, и затем вызвать метод Refresh, чтобы обновить семейство. Удалить таблицу, если она больше не нужна, можно с помощью метода Delete.

СОВЕТМетодRefreshсемействаTableDefsрекомендуетсяприменятьпослекаждогодобав-ления, удаленияилиизмененияобъектаTabteDef. Этоособенноважновмногопользовательскихприложениях.

ВНИМАНИЕ Недостаточно создать объект и установить его свойства, если это объект не времен-ный. Чтобы сохранить его в базе данных, нужно обязательно добавить его в соответствующее семейство. В противном случае Access ничего не будет «знать» о его существовании, и объект просто «исчезнет».

Листинги 5.11 и 5.12 демонстрируют примеры использования этих методов.

Листинг 5.11. Создание таблиц (ОАО — вариант 1)

Sub CreateTempTable ()

Dim db As Database, td as TableDef, fid As Field

Set db = CurrentDB 'создаем новую таблицу

Set td = db.CreateTableDef("ВремТовары") 'создаем поля таблицы и добавляем их в семейство Fields

Set fid = td.CreateField("KoдПpoдyктa", dbText.5)

td. Fields.Append fid

Set fid = td.CreateFieldC'HanMeHOBaHHe", dbText,50)

td.Fields.Append fid

Set fid = td .CreateField("OnncaHne")'можно и так

fid.Type = dbText

fid.Size = 255

td. Fields.Append fid 'добавляем таблицу в семейство TableDefs

db.TableDefs.Append td 'обновляем семейство TableDefs

db.TableDefs.Refresh

db.Close End Sub