Установка дополнительных свойств

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

Set MyFld = MyTableDef.CreateField("fio_stud", dbText, 30)

эквивалентно

Set MyFld = MyTableDef.CreateField()

MyFld.Name="fio_stud"

MyFld.Type= dbText

MyFld.Size = 30

******************************************************************************

'Теперь рассмотрим пример программы создающей базу данных:

'Объявляем переменные для базы данных и рабочего пространства

Dim MyDB As Database

Dim MyWs As Workspace

'Объявляем переменные для таблиц, полей, индексов и отношений

Dim StudTd As TableDef, TownTd As TableDef, TelTd As TableDef,

Dim StudFlds(3) As Field, TownFlds(2) As Field, TelFlds(3) As Field

Dim stud_town_r As Relation, tel_stud_r As Relation

Dim TempFlds(2) As Field

Dim StudIdx(2) As Index, TownIdx As Index, TelIdx(2) As Index,

Dim i As Integer

'Задаем переменную для рабочего пространства

Set MyWs = DBEngine.Workspaces(0)

If Dir("C:\DATE\DBProbaRel.mdb") <> "" Then Kill "C:\DATE\DBProbaRel.mdb"

'Создаем базу данных

Set MyDB = MyWs.CreateDatabase("C:\ DATE\DBProbaRel.mdb", _

dbLangCyrillic, dbVersion40)

'Создаем объекты: таблицы и поля

Set StudTd = MyDB.CreateTableDef("stud")

Set TownTd = MyDB.CreateTableDef("town")

Set TelTd = MyDB.CreateTableDef("tel")

Set StudFlds(0) = StudTd.CreateField("key_stud", dbLong)

StudFlds(0).Attributes = dbAutoIncrField

Set StudFlds(1) = StudTd.CreateField("fio_stud", dbText, 100)

Set StudFlds(2) = StudTd.CreateField("key_town", dbLong)

Set TownFlds(0) = TownTd.CreateField("key_town", dbLong)

TownFlds(0).Attributes = dbAutoIncrField

Set TownFlds(1) = TownTd.CreateField("name_town", dbText, 100)

Set TelFlds(0) = TelTd.CreateField("key_tel", dbLong)

TelFlds(0).Attributes = dbAutoIncrField

Set TelFlds(1) = TelTd.CreateField("num_tel", dbText, 100)

Set TelFlds(2) = TelTd.CreateField("key_stud", dbLong)

'Добавляем созданные поля в коллекции полей каждой таблицы

For i = 0 To 2

StudTd.Fields.Append StudFlds(i)

TelTd.Fields.Append TelFlds(i)

Next i

For i = 0 To 1

TownTd.Fields.Append TownFlds(i)

Next i

'Добавляем созданные таблицы в коллекцию таблиц

MyDB.TableDefs.Append StudTd

MyDB.TableDefs.Append TelTd

MyDB.TableDefs.Append TownTd

'Создаем индексы

Set StudIdx(0) = StudTd.CreateIndex("key_stud")

StudIdx(0).Primary = True

StudIdx(0).Unique = True

Set StudIdx(1) = StudTd.CreateIndex("key_town")

StudIdx(1).Primary = False

StudIdx(1).Unique = False

'Создаем поля для индексов

Set TempFlds(0) = StudIdx(0).CreateField("key_stud")

Set TempFlds(1) = StudIdx(1).CreateField("key_town")

'Добавляем созданные поля в коллекцию полей объекта Index

'и созданные индексы в коллекцию индексов каждой таблицы

For i = 0 To 1

StudIdx(i).Fields.Append TempFlds(i)

StudTd.Indexes.Append StudIdx(i)

Next i

Set TownIdx = TownTd.CreateIndex("key_town")

TownIdx.Primary = True

TownIdx.Unique = True

Set TempFlds(0) = TownIdx.CreateField("key_town")

TownIdx.Fields.Append TempFlds(0)

TownTd.Indexes.Append TownIdx

Set TelIdx(0) = TelTd.CreateIndex("key_tel")

TelIdx(0).Primary = True

TelIdx(0).Unique = True

Set TelIdx(1) = TelTd.CreateIndex("key_stud")

TelIdx(1).Primary = False

TelIdx(1).Unique = False

Set TempFlds(0) = TelIdx(0).CreateField("key_tel")

Set TempFlds(1) = TelIdx(1).CreateField("key_stud")

For i = 0 To 2

TelIdx(i).Fields.Append TempFlds(i)

TelTd.Indexes.Append TelIdx(i)

Next i

'Создаем два отношения: между таблицами stud и town

'и между таблицами tel и stud

Set stud_town_r = MyDB.CreateRelation("stud_town_r")

Set tel_stud_r = MyDB.CreateRelation("tel_stud_r")

'Указываем на основную и внешнюю таблицы отношения stud_town_r

stud_town_r.Table = "town"

stud_town_r.ForeignTable = "stud"

'Создаем поле для отношения

Set TempFlds(0) = stud_town_r.CreateField("key_town")

'Указываем внешний ключ для отношения

TempFlds(0).ForeignName = "key_town"

'Добавляем поле в коллекцию полей созданного отношения

stud_town_r.Fields.Append TempFlds(0)

'Добавляем отношение в коллекцию отношений базы данных

MyDB.Relations.Append stud_town_r

tel_stud_r.Table = "stud"

tel_stud_r.ForeignTable = "tel"

Set TempFlds(0) = tel_stud_r.CreateField("key_stud")

TempFlds(0).ForeignName = "key_stud"

tel_stud_r.Fields.Append TempFlds(0)

MyDB.Relations.Append tel_stud_r

'Очищаем ссылки на объекты

For i = 0 To 2

Set StudFlds(i) = Nothing

Set TelFlds(i) = Nothing

Next i

For i = 0 To 1

Set TownFlds(i) = Nothing

Next i

'Закрываем базу данных

MyDB.Close

End Sub


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: