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

Очень часто приходится писать программы работающие с  БД , решение этой задачи напрашивается само по себе – создаешь Базу Данных в Access, а затем пишешь программу-оболочку. Но что делать, если заказчику небходимо, к примеру иметь отдельные БД для каждого календарного года, или же ежемесячные (ежекварталные), но что б обрабатывались они по единому принципу? Ведь не будете же вы каждый месяц или год бегать к нему и создавать в Access все новые и новые БД, тем более если вы работаете на заказ в 'оффшоре', а создавать их заранее, как то несолидно и граничит с абсурдом. А выход из этой ситуации есть – это VB.

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

 

Создание Базы Данных

Visual Basic содержит два объекта доступа к данным BDEngine и Workspace. Для создания БД применяется метод CreateDatabase, который является частью объекта Workspace. Рабочая область (Workspace) создается при каждом доступе к Jet-машине. При необходимости можно открывать другие рабочие области. Если при работе с функциями не указывается ID-номер рабочей области, то подразумевается рабочая область по умолчанию.

При помощи оператора Dim (или Public для модуля) описываем переменную NewDB, как объект БД, создаем рабочую область и с помощью метода CreateDatabase создаем Базу Данных. 

Примечание. Установите в Referecesвашего проекта ссылку на соответствующую библиотеку Microsoft DAO 3.51 (или 3.6) Object Library. [ 3.51 – при наличии  Access 97, 3.6 при наличии Access 2000 ]

'Объявлеям необходимые переменные

Dim NewDB As Database

Dim NewWs As WorkSpace

Dim strDBPath As String

 'Устанавливаем путь к создаваемой БД с указанием ее имени (MyDB.mdb)

StrDBPath = “C:\ExamplDB\MyDB.mdb” 

Создаем рабочее пространство

Set NewWs = DBEngine.Workspaces(0) 

'Создаем Базу Данных

Set NewDB = NewWs.CreateDatabase (strDBPath, dbLangGeneral) 

Совет. Для получения имени файла БД и пути к ней можно использовать диалоговое окно Open, эл. управления CommonDialog. 

Константа dbLangGeneral является обязательным параметром метода CreateDatabase . Она описувает язык и кодовую страницу для американских компьютеров. Для русской версии употребляют dbLangCyrillic.

У метода CreateDatabase  имеется еще один параметр, этот аргумент позволяет создавать БД для Jet-машины версий 1.0; 1,1; 2,5; 3.0; 3,5 и 3.6 и шифровать БД. Для вызова этих опций нужно просуммировать константы типа long integer и включить результат, как последний аргумент функции. 

Dim NewDB As Database

Dim NewWs As WorkSpace

Dim lngDBOpts As Long

Dim strDBPath As String 

StrDBPath = “C:\ExamplDB\MyDB.mdb”

'Устанавливаем опции

LngDBOpts = dbVersion30 + dbEncrypt

Создаем рабочее пространство

Set NewWs = DBEngine.Workspaces(0)

 'Создаем Базу Данных

Set NewDB = NewWs.CreateDatabase (strDBPath, dbLangCyrillic, lngDBOpts) 

‘****************************************

‘После создания БД, закрываем ее и рабочее пространство

NewDB.Close

NewWs.Close

'Уничтожаем объекты

Set NewDB = Nothing

Set NewWs = Nothing 

После выполнения этого кода у вас создается БД, можете посмотреть. Но не удивляйтесь если она пуста, т.к нам еще только предстоит заполнить ее таблицами.  

Внимание. При использовании метода CreateDatabase , если создаваемый файл (*.mdb) уже существует, возникает перехватываемая ошибка  - 3204 – 'Database alredy exists'. Необходимо включить код для ее перехвата.  

Пример создания БД находится в разделе  SourceCode, темы  VB & DB.(Программное создание Баз Данных. Шаг 1. Создание БД)