Программное создание базы данных с помощью 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 
  
 
  | 
Закрываем соединение с базой данных 
Ниже приведена таблица с описанием других свойств (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   |