Если при использовании метода 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