Создание базы, таблиц, индексов, связей и запросов — КиберПедия 

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Создание базы, таблиц, индексов, связей и запросов

2022-10-29 25
Создание базы, таблиц, индексов, связей и запросов 0.00 из 5.00 0 оценок
Заказать работу

Приведем пример процедур создания базы “Строительство” из трех связанных таблиц “Стройки”, “Населенные пункты”, “Заказчики” (п. 9.1) и запро­са “Стройки по заказчикам”.

Private Sub Command1_ Click() ‘создание пустой базы “Строительство“

Dim db As Database, tdf As TableDef, fld As Field, qdf As QueryDef

Dim idx As Index, relnew As Relation, SQLstr As String, I As Integer

On Error GoTo proc_ err 'переход на процедуру обработки ошибок

'создание в каталоге приложения (App.Path) пустой базы “Строительство“

Set db=DBEngine.CreateDatabase(App.Path+“\Строительство“, dbLangCyrillic)

For i=db.Relations.Count ‑ 1 To 0 Step -1 'удаление существующих связей

If db.Relations(i).Name = “Заказчики“ Or _

db.Relations(i).Name = “НаселенныеПункты“ Then           ‘ связь есть

Set relnew=db.Relations(i):db.Relations.Delete relnew.Name ' удаление ee

End If

Next                                                         'окончание цикла удаления связей

For i=db.TableDefs.Count-1 To 0 Step -1'удаление существующих таблиц

 If db.TableDefs(i).Name = “Стройки“ Or _

db.TableDefs(i).Name = “Заказчики“ _

Or db.TableDefs(i).Name = “Населенные пункты“ Then 'таблица есть

Set tdf = db.TableDefs(i): db.TableDefs.Delete tdf.Name 'удаление таблицы

 End If                                                            ‘окончание оператора If

Next                                                               'окончание цикла удаления таблиц

Set tdf = db. CreateTableDef(“Стройки“) 'создание таблицы “Стройки“

Set fld = tdf.CreateField(“NS“, dbText, 50) 'определение поля Ns

tdf.Fields.Append fld 'добавление, ранее определенного, поля в таблицу

Set fld = tdf.CreateField(“Knp“,dbByte)   : tdf.Fields.Append fld 'поле Knp

Set fld = tdf.CreateField(“Kz“, dbByte)   : tdf.Fields.Append fld 'поле Kz

Set fld = tdf.CreateField(“Dn“, dbDate)  : tdf.Fields.Append fld 'поле Dn

Set fld = tdf.CreateField(“Ss“, dbCurrency): tdf.Fields.Append fld 'поле Ss

Set fld = tdf.CreateField(“Sf“, dbCurrency): tdf.Fields.Append fld 'поле Sf

Set fld = tdf.CreateField(“M“, dbText, 50): tdf.Fields.Append fld 'поле M

db.TableDefs.Append tdf 'добавление ранее определенной таблицы в базу

Set idx = tdf. CreateIndex(“ indnsknpkz“) 'создание индекса indnsknpkz

idx.Fields.Append idx.CreateField(“Ns“)   'добавление поля Ns в индекс

idx.Fields.Append idx.CreateField(“Knp“)  'добавление поля Knp в индекс

idx.Fields.Append idx.CreateField(“Kz“)    'добавление поля Kz в индекс

idx.Primary = True              ' установка признака первичного ключа

tdf.Indexes.Append idx       ' добавление ключа в массив ключей таблицы

Set tdf= db. CreateTableDef(“Заказчики“) 'создание таблицы “Заказчики“

Set fld = tdf.CreateField(“Kz“, dbByte): tdf.Fields.Append fld    'поле Kz

Set fld = tdf.CreateField(“Nz“, dbText, 30): tdf.Fields.Append fld 'поле Nz

db.TableDefs.Append tdf 'добавление ранее определенной таблицы в базу

Set idx = tdf. CreateIndex(“ indkz“)     ' создание индекса “ indkz“

idx.Fields.Append idx.CreateField(“Kz“) 'добавление поля Kz в индекс

idx.Primary = True            ' установка признака первичного ключа

tdf.Indexes.Append idx     ' добавление ключа в массив ключей таблицы

'установка связи под именем “Заказчики“ между родительской (главной) ‘таблицей “Заказчики“ и дочерней (внешней) таблицей ‘“Стройки“ по полю Kz с ‘каскадной корректировкой подчиненных записей

Set relnew = db.CreateRelation(“Заказчики“, _

  “Заказчики“, “Стройки“, dbRelationUpdateCascade)

relnew.Fields.Append relnew.CreateField(“Kz“) 'добавление поля Kz в связь

relnew.Fields!kz.ForeignName = “Kz“ 'имя поля связи в таблице “Стройки“

db.Relations.Append relnew          'добавление связи в массив связей базы

Set tdf = db. CreateTableDef(“Населенные пункты“) 'создание таблицы

Set fld = tdf.CreateField(“Knp“, dbByte): tdf.Fields.Append fld   'поле Knp

Set fld = tdf.CreateField(“Nnp“, dbText, 30): tdf.Fields.Append fld 'поле Nnp

db.TableDefs.Append tdf 'добавление ранее определенной таблицы в базу

Set idx = tdf.CreateIndex(“indknp“): idx.Fields.Append idx.CreateField(“Knp“)

idx.Primary = True: tdf.Indexes.Append idx 'создание первичного индекса

'установка связи под именем “НаселенныеПункты“ между роди­тель­ской ‘(главной)таблицей “НаселенныеПункты“ и дочерней (внешней) таб­ли­цей ‘”Стройки“ по полю Knp с каскадной корректировкой подчинен­ных записей

Set relnew = db.CreateRelation(“НаселенныеПункты“, _

      “Населенные пункты“, “Стройки“, dbRelationUpdateCascade)

relnew.Fields.Append relnew.CreateField(“Knp“) 'добавление Knp в связь

relnew.Fields!knp.ForeignName = “Knp“          'имя поля связи в таблице

db.Relations.Append relnew                'добавление связи в массив связей базы

'формирование запроса под именем “Стройки по заказчикам“

For i = 0 To db. QueryDefs. Count - 1 'удаление существующего запроса

If db.QueryDefs(i).Name = “Стройки по заказчикам“ Then 'запрос уже есть

Set qdf = db.QueryDefs(i): db.QueryDefs.Delete qdf.Name 'удаление его

Exit For 'выход из цикла

End If

Next 'окончание цикла удаления запросов

SQLstr = “Select * From [Стройки] Order By Kz“        ' команда запроса

Set qdf= db. CreateQueryDef(“Стройки по заказчикам“, SQLstr) 'запрос

db.Close ' закрытие созданной базы

Exit Sub                  'выход из процедуры

proc_ err:               'блок обработки ошибок

MsgBox (“Описание: “ & Err.Description + “ Код ошибки: “ & _

 Err.Number & “ Источник ошибки: “ & Err.Source) ' вывод сообщения

If Err.Number = 3204 Then 'база уже существует и ее открытие далее

 Set db=DBEngine.Workspaces(0).OpenDatabase(App.Path+“\Строительство“)

 Resume Next 'переход к следующей команде (ошибка игнорируется)

End If

End Sub


Поделиться с друзьями:

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.013 с.