MyTetra Share
Делитесь знаниями!
Программное создание базы данных с помощью ADOX - Часть 2 (исходники)
Время создания: 16.03.2019 23:43
Текстовые метки: VBA, CreateDataBase, создание базы данных
Раздел: Разные закладки - VBA - Access - CreateDataBase
Запись: xintrea/mytetra_db_adgaver_new/master/base/1531932659tnt1tp02ln/text.html на raw.githubusercontent.com

Программное создание базы данных с помощью ADOX - Часть 2 (исходники)

Источник: VBRussian

Руслан Иноземцев

Часть 1

Создание полей типа "счетчик"

Для этого нам понадобятся два объекта:


Dim cat As New ADOX.Catalog ? Каталог иными словами наша база данных

Dim col As New ADOX.Column ? Колонка, то есть поле типа ?счетчикЋ,

? которое мы добавим к таблице



Создадим подключение к БД. Напомню, что работа с базой данных Access через провайдера Microsoft.Jet работает в 1.5 ? 2 раза быстрее, чем через ODBC.


cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=.\NorthWind.mdb;"



Теперь зададим для нового поля свойства, коорые заставят его быть счетчиком.


With col

.Name = "ContactId"

.Type = adInteger

Set .ParentCatalog = cat

.Properties("AutoIncrement") = True

.Properties("Seed") = CLng(1)

.Properties("Increment") = CLng(1)

End With



Вот теперь это поле можно добавить в таблицу


cat.Tables("MyTale").Columns.Append col



Закрываем соединение с базой данных


Set cat = Nothing



Ниже приведена таблица с описанием других свойств (Properties) объекта Column:


Название

Тип

Значение по умолчанию

Доступ

Описание

AutoIncrement

adBoolean

False

adPropRead

adPropWrite

adPropRequired

Задает тип поля ?СчетчикЋ с автоматическим увеличением значения при добавлении записи

Default

adEmpty1

Empty

adPropRead

adPropWrite

adPropRequired

Значение поля по умолчанию

Description

adBStr

""

adPropRead

adPropWrite

adPropRequired

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

Fixed Length

adBoolean

False

adPropRead

adPropWrite

adPropRequired

Определяет ,будет поле фиксированой длины или переменой

Increment

adInteger

1

adPropRead

adPropWrite

adPropRequired

Значение, на которое будет увеличиваться поле типа ?счетчикЋ

Nullable

adBoolean

False

adPropRead

adPropWrite

adPropRequired

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

Seed

adInteger

1

adPropRead

adPropWrite

adPropRequired

Значение, с которого начнется отсчет в первой записи для поля типа ?счетчикЋ

Jet OLEDB:Allow Zero Length

adBoolean

False

adPropRead

adPropWrite

adPropRequired

Определяет, могут ли текстовые поля содержать строки нулевой длины. Игнорируется для несимвольных полей

Jet OLEDB:AutoGenerate

adBoolean

False

adPropRead

adPropWrite

adPropRequired

Определяет, будет ли автоматически генерироваться новое значение GUID для полей типа adGUID

Jet OLEDB:Column Validation Rule

adBStr

""

adPropRead

adPropWrite

adPropRequired

Выражение, определяющее правильность записываемого в поле значения, должно быть написано в формате SQL WHERE но без ключевого слова WHERE

Jet OLEDB:Column Validation Text

adBStr

""

adPropRead

adPropWrite

adPropRequired

Текст, который будет показан, в случае несоответствия заносимого в поле значения, определенному для этого поля правилу (Rule).

Jet OLEDB:Compressed UNICODE Strings

adBoolean

False

adPropRead

adPropWrite

adPropRequired

Определяет, будет ли Microsoft Jet сжимать UNICODE строкипри записи на диск. Игнорируется, если база данных не в формате Microsoft Jet version 4.0

Jet OLEDB:Hyperlink

adBoolean

False

adPropRead

adPropWrite

adPropRequired

Определяет, что данные в поле являются гиперссылкой. Игнорируется для полей с типом отличным от adLongVarWChar.

Jet OLEDB:IISAM Not Last Column

adBoolean

False

adPropRead

adPropWrite

adPropRequired

Это свойство я не берусь переводить, поскольку с ISAM драйверами не работаю.

?

For Installable-ISAMs, this property informs the I-ISAM that there are more columns that are going to be added to the table after this one. If you are using ITableDefinition::AddColumn or ITableDefintion::CreateTable, it is required that you set this property for every column except the last column.

Jet OLEDB:One BLOB per Page

adBoolean

False

adPropRead

adPropWrite

adPropRequired

Определяет, должны ли данные хранится в раздельных страницах (True) или могут использовать общие страницы базы данных, для экономии места на диске. Работает только с полями типа adLongVarBinary.

2. Программное сжатие базы данных

Программное сжатие, которое раньше выполнялось командой CompactDatabase библиотеки DAO не представлено не в ADO не в ADOX. Эти операции вместе с программным управлением репликацией вынесены в отдельную библиотеку

Microsoft Jet and Replication Objects X.X library Где X.X соответствует версии ADO с которой вы работаете, но не ниже 2.5.

Так что поставьте ссылку в Project/References на эту библиотеку и переходим к процессу программирования.

Библиотека довольно скудна по количеству функций. Я попробую привести описание ее объектной модели.

Объекта всего два:

  JetEngine

  Replica

JetEngine содержит только два метода CompacDatabase, его мы рассмотрим ниже и RefreshCache, который как ясно из названия обновляет кэшированную область базы данных.

Объект Replica управляет репликацией, здесь я его рассматривать не буду, возможно, сделаю это в отдельной статье.

Итак, для сжатия базы данных нам необходим следующий код.


Dim jro As jro.JetEngine ? Объявляем и создаем экземпляр объекта JetEngine

Set jro = New jro.JetEngine ?

jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyDatabase.mdb", _

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyCompactedDatabase.mdb;Jet OLEDB:Engine Type=4"


Set jro = Nothing



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

Напомню, что можно использовать встроенные в VB команды:


Kill ?FileName?

Name ?OldFileName? As ?NewFileName?



Главная страница - Программные продукты - Статьи - Интеграция приложений и данных , СУБД и хранилища данных , Microsoft

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования