понедельник, 4 апреля 2011 г.

Программное создание таблицы и ее полей в MS Access 2003


Задача: создать в базе данных MS Acces 2003 таблицу, в таблице ключевое поле типа счетчик, поля с разными типами данных


Способ решения:




Sub СоздатьТаблицу()
Dim db As Database ' бд, в которой будет создаваться таблица
Dim Tbl As TableDef ' создаваемая таблица

Dim Fld1 As Field ' добавляемое поле
Dim Fld2 As Field
Dim Fld3 As Field
Dim Fld4 As Field
Dim Fld5 As Field
Dim Fld6 As Field
Dim Fld7 As Field
Dim Fld8 As Field
Dim Fld9 As Field
Dim Fld10 As Field
Dim Fld11 As Field
Dim Fld12 As Field
Dim Fld15 As Field
Dim Fld16 As Field


Dim Indx As Index ' индекс таблицы
Dim IndxFld As Field ' поле индекса таблицы

' определяю бд, в которой создаю таблицу
Set db = CurrentDb
' создаю таблицу
Set Tbl = db.CreateTableDef("Таблица")
' ========================================
' создаю ключевое поле
Set Fld1 = Tbl.CreateField("КлючевоеПоле", dbLong)
' делаю  поле счетчиком
Fld1.Attributes = Fld1.Attributes + dbAutoIncrField
' добавляю поле в таблицу
Tbl.Fields.Append Fld1
' создаю индекс по полю "КлючевоеПоле"
Set Indx = Tbl.CreateIndex("Ключевое поле")
Set IndxFld = Indx.CreateField("КлючевоеПоле", dbLong)
' добавляю индекс
Indx.Fields.Append IndxFld
' делаю  первичным ключем
Indx.Primary = True
' добавляю индекс
Tbl.Indexes.Append Indx

' ========================================
' создаю  поле. тип данных -- логический
Set Fld2 = Tbl.CreateField("Поле1", 1)
Tbl.Fields.Append Fld2

' ========================================
' создаю  поле. тип данных -- числовой (байт)
Set Fld2 = Tbl.CreateField("Поле2", 2)
Tbl.Fields.Append Fld2


' ========================================
' создаю  поле. тип данных -- числовой (целое)
Set Fld3 = Tbl.CreateField("Поле3", 3)
Tbl.Fields.Append Fld3


' ========================================
' создаю  поле. тип данных -- числовой(длинное целое)
Set Fld4 = Tbl.CreateField("Поле4", 4)
Tbl.Fields.Append Fld4


' ========================================
' создаю  поле. тип данных -- денежный
Set Fld5 = Tbl.CreateField("Поле5", 5)
Tbl.Fields.Append Fld5


' ========================================
' создаю  поле. тип данных -- числовой (Одинарное с плавающей точкой)
Set Fld6 = Tbl.CreateField("Поле6", 6)
Tbl.Fields.Append Fld6


' ========================================
' создаю  поле. тип данных -- числовой (Двойное с плавающей точкой)
Set Fld7 = Tbl.CreateField("Поле7", 7)
Tbl.Fields.Append Fld7


' ========================================
' создаю  поле. тип данных -- дата/время
Set Fld8 = Tbl.CreateField("Поле8", 8)
Tbl.Fields.Append Fld8


' ========================================
' создаю  поле. тип данных -- двоичный
Set Fld9 = Tbl.CreateField("Поле9", 9)
Tbl.Fields.Append Fld9


' ========================================
' создаю  поле. тип данных -- текстовый (150 символов)
Set Fld10 = Tbl.CreateField("Поле10", 10, 150)
Tbl.Fields.Append Fld10


' ========================================
' создаю  поле. тип данных -- поле объекта
Set Fld11 = Tbl.CreateField("Поле11", 11)
Tbl.Fields.Append Fld11


' ========================================
' создаю  поле. тип данных -- поле МЕМО
Set Fld12 = Tbl.CreateField("Поле12", 12)
Tbl.Fields.Append Fld12


' ========================================
' создаю  поле. тип данных -- числовой (код репликации)
Set Fld15 = Tbl.CreateField("Поле15", 15)
Tbl.Fields.Append Fld15


' ========================================
' создаю  поле. тип данных -- числовой (действительное)
Set Fld16 = Tbl.CreateField("Поле16", 16)
Tbl.Fields.Append Fld16



' добавляю таблицу
db.TableDefs.Append Tbl
' обновляю данные о таблицах
db.TableDefs.Refresh


Set db = Nothing
End Sub


Примечания:
возможно (и даже наверняка) существует более оптимальный и красивый код для выполнения поставленой задачи, но я использовал приведенный здесь.

1 комментарий:

  1. Спасибо, добрый человек!
    Гораздо лучше чем документация майкрософта.

    ОтветитьУдалить