Можно добавить к базе данных новые объекты TableDef или добавить к существующим таблицам новые объекты Field и Index. Можно также удалить объект TableDef из базы или удалить объект Index из TableDef. Есть несколько ограничений на удаление объекта Field
Добавление таблицы к базе данных
Чтобы добавить новую таблицу к базе данных, нужно просто включить в существующую коллекцию TableDefs новый объект TableDef.
Пример:
Dim db as Database
Dim NewTd as TableDef
Dim NewFld as Field
Set db = DBEngine.Workspaces(0).OpenDatabase("Test.mdb")
Set NewTd = db.CreateTableDef("new_table")
Set NewFld = NewTd.CreateField("new_fld", dbInteger)
NewTd.Fields.Append NewFld
db.TableDefs.Append NewTd
db.Close
Удаление таблицы
Для удаления таблицы используется метод Delete коллекции TableDefs. При удалении таблицы уничтожаются все данные хранящиеся в таблице, поля, индексы, поэтому необходимо быть очень внимательными перед тем как выполнять удаление.
db.TableDefs.Delete "Authors"
Добавление поля к таблице
Чтобы добавить поле к существующей таблице его необходимо присоединить к коллекции Fields
Dim db as Database
Dim Td as TableDef
|
|
Dim Fld as Field
Set db = DBEngine.Workspaces(0).OpenDatabase("C:\proba.mdb")
Set Td = db.TableDefs("stud")
'Создаем новый объект поля
Set Fld = Td.CreateField("Address",dbText,40)
'присоединяем созданный объект к коллекции
Td.Fields.Append Fld
'Используем переменную Fld для создания еще одного объекта поля
Set.Fld = Td.CreateField("Phone",dbText,25)
Td.Fields.Append Fld
db.Close
Изменение или удаление поля
После включения в коллекцию TableDef отдельное поле не может быть изменено, удалить отдельное поле можно только в том случае, если оно не является частью объектов Index или Relation
Чтобы удалить поле, можно использовать метод Delete объекта TableDef. Для изменения отдельного поля нужно добавить отдельный объект TableDef, имеющий требуемые изменения в поле, затем переместить данные в новую таблицу, и после этого удалить старую.
Добавление индекса
Чтобы добавить индекс используется метод Append
Dim db as Database, Td as TableDef, NewIdx as Index, NewFld as Field
Set db = DBEngine.Workcpace(0).OpenDatabase("MyBase.mdb")
Set Td=db.TableDefs("stud")
Set NewIdx = Td.CreateIndex("fio_stud_index")
NewIdx.Unique = False
Set NewFld = NewIdx.CreateField("fio_stud")
NewIdx.Fields.Append NewFld
Td.Indexes.Append NewIdx
db.Close