Программное создание Баз Данных

После того как для новой таблицы определен объект TableDef необходимо описать объекты полей. Таблица может иметь одно или множество полей.

Создание полей 

Описание полей 

Поля таблицы описываются с помощью объекта Field, который содержит всю информацию о поле таблицы данных. Для каждого поля следует указать имя и тип. В зависимости типа поля описание других свойств может быть обязательным или нет. Существуют 17 свойств объекта Field. С их помощью можно определять размер и тип поля, и так же является это поле 'родным' Microsoft Jet или это присоединенное пле внейней базы. Visual Basic распознает 14 различных типов полей данных. 

Таблица N1 Тип полей данных

Тип поля данных

Размер

Тип данных в VB

Комментарии

BOOLEAN

1

Boolean

Хранит только 0 или –1

BYTE

1

Integer

Хранит только 0 – 255

COUNTER

8

Long

Автоматически наращиваемый тип Long

CURENCY

8

Curency

15 позиций слева от десятичной точки и 4 справа

DATETIME

8

Date/Time

Дата хранится слева от дец. Точки, а время  - справа

DOUBLE

8

Double

 

GUID

16

(нет)

Используется для хранения глобально уникальных идентификаторов

INTEGER

2

Integer

 

LONG

8

Long

 

LONGBINARY

V

(нет)

Используется для OLE – объектов

MEMO

V

String

Длина около 1,2 Гб

SINGLE

4

Single

 

TEXT

V

String

Ограничено 255 – ю байтами

Многие из типов полей данных понятны и поэтому чуть подробнее опишу некоторые из оставшихся.

  •  Поля типа LONGBINARY предназначены для хранения изображений и OLE – объектов;

  • Поле BOOLEAN чаще всего применяется для для хранения результатов выбора в связанных флажках, где –1 – True, а 0 – False. НО будьте осторожну  при вводе информации в эти поля, т.к. любое отличное от 0 числи будет преобразовываться в –1;

  • Поле типа BYTE воспринимает только числа от 0 – 255, любое другое значение вызовет ошибку 524;

  • Тип поля COUNTER является автоматически наращиваемым и очень часто применяется в качестве уникального первичного ключа. Оно предназначено только для чтения;

  • Поле типа GUID используется для хранения 128 – разрядного числа специального типа;

Теперь после небольшого обзора настало время создать и описать поля. Поля создаются с помощью метода CreateField. Имеются два метода создания полей. 

Первый метод

С помощью метода CreateField определяем имя поля, тип и размер. 

Объявляем переменные

Dim F1 As Field, F2 As Field, F3 As Field 

'Устанавливаем имя, тип и размер поля

Set F1 = NewTbl.CreateField (“FirstName”, dbText, 20)

Set F2 = NewTbl.CreateField (“LastName”, dbText, 20)

Set F3 = NewTbl.CreateField (“Age”, dbInteger) 

После того как поля включаемые в таблицу описаны, при помощи метода Append  объекта TableDef,  эти поля добавляются к таблице. 

NewTbl.Fields.Append F1

NewTbl.Fields.Append F2

NewTbl.Fields.Append F3 

Второй метод

Можно вызвать метод CreateField  без всяких параметров, а имя, тип и размер установить потом при помощи оператора присваивания. 

Объявляем переменную

Dim F1 As Field 

'Создаем поле

Set F1 = NewTbl.CreateField () 

‘Свойства поля устанавливаем явно

F1.Name = “FirstName”

F1.Type = dbText

F1.Size = 20 

После того как поле включаемое в таблицу описано, при помощи метода Append  объекта TableDef,  оно добавляется к таблице. 

NewTbl.Fields.Append F1 

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

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

Первым из этих свойств является Attributes. При создании полей используюся два его основных значения. Первое – автоинкремент – задаетж приращение значения поля БД всякий раз, когда добавляется новая запись. С помощью данного свойства можно организовать счетчик записей, чтобы обеспечить уникальное значение этого поля. Тогда поле с автоинкрементом можно использовать, как поле первичного ключа (Primary Key).

Примечание. Автоинкремент можно установить только для полей с типом данных Long. 

Объявляем переменную

Dim F1 As Field 

'Создаем поле

Set F1 = NewTbl.CreateField (“ID”, dbLong) 

‘Устанавливаем свойства автоинкремента

F1.Attributies = dbAuotoIncrField 

‘Добавляем к таблице

NewTbl.Fields.Append F1 

Другое факультативное значение – updatable  позволяет разрешать или запрещять изменение поля. Обычно эта установка не используется при начальном создании поля. 

Другие константы, которые можно использовать вместе со свойством Attributes приведены ниже. Этому свойству можно задавать сложные значения, для чего следует объединить значения отдельных констант и присвоить свойству их суммы. 

Константа

Функция

dbFixedField

Длина поля – фиксирована

dbVariebleField

Длина поля может изменятся (только для текстовых)

dbAuotoIncrField

Ядро БД автоматически увеличивает значение поля

dbUpdatableField

Значение поля может изменяться

Кроме свойств Attributes для отдельных полей можно определять некоторые другие свойства. Для изменения значений этих свойств, также как и для свойства Attributes, используются операторы присваивания; эти значения нельзя установить при вызове метода CreateField.  

Свойство

Комментарии

AllowZeroLenght

Определяет, может ли поле Text или Memo иметь нулевую длину. Значение True – разрешает ввод пустых строк.

DefaulValue

Позволяет задавать значение поля по умолчанию

Required

Определяет, обязательно ли поле должно иметь значение

ValidationRule

Устанавливает условие, которому должно отвечать поле для того, чтобы запись можно было обновить

ValidationText

Определяет сообщение об ошибке, выводимое в том случае, когда нарушается правило проверки достоверности поля(ValidationRule)

Объявляем переменные

Dim F3 As Field 

'Устанавливаем имя, тип и размер поля

Set F3 = NewTbl.CreateField (“Age”, dbInteger) 

'Устанавливаем факультативные свойства

F3.ValidationRule = “Age” > 0

F3.ValidationText = “Возраст должен быть больше 0 

‘Добавляем к таблице

NewTbl.Fields.Append F3 

Удаление полей 

Для удаления поля используется метод Delete. 

Удаляем из таблицы NewTbl поле Age

NewTbl.Fields.Delete “Age” 

или 

Удаляем из БД NewDB, таблицы с имене Name поле Age

NewDB.TableDefs(Name).Fields.Delete “Age”

Пример создания Полей находится в разделе  SourceCode