Понедельник, 06.05.2024, 07:34
Приветствую Вас Гость | RSS
Категории раздела
Вход на сайт
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

MS Access - разработка баз под заказ

Каталог статей


Программное создание баз Access форматов MDB и ACCDB

Создание базы с использованием метода ADO.

С помощью ADO можно легко изменять структуру данных. Для создания и изменения таблиц, запросов и других объектов данных, например индексов, следует использовать специальную библиотеку ADO, называемую ADOx. Перед использованием ADOx необходимо установить ссылку на библиотеку Microsoft ADO Ext. 2.x For DDL and Security входящую в состам MDAC 2.x (англ. Microsoft Data Access Components), где x - номер врсии, выполнив команды меню Tools | References (Сервис | Ссылки) в VBE.
Если ссылка установлена, ADOx готов к использованию.
Последний номер версии MDAC и соответственно Microsoft ADO Ext. 2.х For DDL and Security - 2.8. Его дальнейшая разработка прекращена (MDAC).
Начиная с Windows XP SP2 и Server 2003, данные компоненты (MDAC) считаются неотъемлемой частью операционной системы, а, начиная с Windows Vista и Server 2008, они переименованы в «Windows Data Access Components» (WDAC) и более не распространяются в виде отдельного инсталлятора. Последняя версия Microsoft ADO Ext. 6.0 For DDL and Security и появилась она одновременно с выходом Office 2007 и формата баз данных ACCDB.
Microsoft Jet — движок базы данных Microsoft Access, а также соответствующий поставщик OLE DB — Microsoft Jet OLE DB Provider и драйвер ODBC — ODBC Desktop Database Drivers переданы группе разрабатывающей Access.
При использовании ADOx все операции так или иначе связаны с объектом Catalog. Этот объект представляет базу данных. Работая в Access, необходимо всего лишь присвоить свойству ActiveConnection объекта Catalog допустимое значение, соответствующее объекту ADO Command, с которого начинается выполнение.
Сейчас есть два основных провайдера OLEDB: Microsoft.JET.OLEDB.4.0 и Microsoft.ACE.OLEDB.12.0. Первый провайдер работал в ранних версиях Access (до 2003 включительно). Второй провайдер появился начиная с 2007 версии Access (хотя А2007 и 32-х разрядные версии последующих офисов могут работать и с провайдером OLEDB: Microsoft.JET.OLEDB.4.0). На сегодня официально существует следующая версия провайдера ACE - Microsoft.ACE.OLEDB.12.0. В Access 2010 этот провайдер называется Microsoft.ACE.OLEDB.14.0, В Access 2013 - Microsoft.ACE.OLEDB.15.0, В Access 2016 - Microsoft.ACE.OLEDB.16.0. При переносе программы на другую версию Access (с 2010 на 2007 или с 2010 на 2013), Access сам устанавливает нужную версию провайдера Microsoft.ACE.OLEDB.
Стандартная строка подключения первого провайдера

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin;Password=;

Используя этот провайдер можно подключаться к базам Access MDB/MDE (97-2003), Paradox, DBF/FoxPro, книгам Excel (97-2003, xls), таблицам в формате HTML и TXT. Кроме того он поддерживает подключение сетевых и удалённых баз (HTTP).
Стандартная строка подключения второго провайдера

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;Persist Security Info=False;

Используя этот провайдер можно подключаться к базам Access MDB/MDE (97-2003) и ACCDB/ACCDE (2007-2013), DBF/FoxPro, книгам Excel (97-2003, xls и 2007-2013, xlsx). Кроме того он поддерживает подключение сетевых баз и SharePoint (HTTP).
Microsoft утверждает: "Ядро ACE полностью обратно совместимо с предыдущими версиями JET, что позволяет выполнять чтение и запись данных в MDB-файлы из предыдущих версий Access", но вот сами версии могут не поддерживать нужные Вам форматы для обмена данными. Например, в версии Access 2013 Microsoft исключила экспорт в формат DBF, посчитав устаревшим. В версии Access 2016, она вернула экспорт в DBF, и то не в исходную версию, а через обновления KB3115501 и KB3178700 за май 2017 года. Исчез так же импорт и экспорт в формат СУБД Paradox.

Примечание о 32-х и 64-х версиях:
Microsoft OLE DB Provider для Jet и драйвер Jet ODBC доступны только в 32-битных версиях Офиса. Вы не можете запустить их в 64-битном режиме.
Например, у вас есть 32-битное приложение, которое использует Microsoft OLE DB Provider для Jet. Если вы запустите приложение для работы в 64-битном режиме, приложение не сможет подключиться к источнику данных с помощью Microsoft OLE DB Provider для Jet.

Эта проблема возникает потому, что приложение требует 64-разрядную версию Microsoft OLE DB Provider для Jet.

Решение

Если вы запускаете программу в 64 битной среде и должны использовать утилиту Jet, чтобы открыть Access, Excel или текстовый файл, возможно несколько вариантов.

1 - Запустите программу в режиме WoW64 (эмулирует 32-бит на 64-битных системах). Это сделает работоспособными 32 битные драйвера.

2 - Начиная с версии 2010, Office будет выпускаться в 2-х вариантах. 32-х и 64-х битных. В Office 2010 появились новые драйверы, Office System Driver 2010 года. Вы можете использовать эти драйвера, для подключения вашего приложения к Access, Excel и текстовым файлам в 64-х битной среде. Название провайдера - Microsoft.ACE.OLEDB.12.0. Вам не нужно покупать и устанавливать офисный пакет, компоненты доступны в виде отдельной загрузки.

http://www.microsoft.com/downloads/details.aspx?FamilyID=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en
 

Dim cat As ADOx.Catalog
Set cat = New ADOx. Catalog
'Присвоение объекту Catalog значения,
'соответствующего текущей базе данных
cat.ActiveConnection = CurrentProject.Connection


Создание базы данных
Для создания с помощью ADOx новой пустой базы данных необходимо использовать метод Create объекта Catalog, передав ему значение, содержащее путь и имя создаваемой базы данных.

'---------------------------------------------------------------------------------------
' Procedure : CreateDataBaseADO
' DateTime : 02.12.2014 14:24
' Version : 2.0
' Author : DSonnyh
' Purpose : создает новую базу данных с использованием возможностей ADOx
'---------------------------------------------------------------------------------------
'
Sub CreateDataBaseADO(newDB As String, _
 Optional iVersion As Integer = 5)

'По материалам книги "Microsoft Access 2000 Development Unleashed"
'Авторы: Forte, Howe, Ralston
 
 Dim cat As ADOX.Catalog
 On Error GoTo Proc_Err
 Set cat = New ADOX.Catalog

' Проверка версии Access
If Val(SysCmd(acSysCmdAccessVer)) < 12# Then
 Select Case iVersion
 Case 1, 2, 3, 4, 5
 cat.Create "Provider=Microsoft.JET.OLEDB.4.0;" & _
 "Data Source=" & newDB & ".mdb;Jet OLEDB:Engine Type=" & iVersion
 Case Else
 MsgBox "Incorrect parameter!", vbCritical
 End Select
Else
 Select Case iVersion
 Case 1, 2, 3, 4, 5
 cat.Create "Provider=Microsoft.ACE.OLEDB.12.0;" & _
 "Data Source=" & newDB & ".mdb;Jet OLEDB:Engine Type=" & iVersion
 Case 6
 cat.Create "Provider=Microsoft.ACE.OLEDB.12.0;" & _
 "Data Source=" & newDB & ".accdb"
 Case Else
 MsgBox "Incorrect parameter!", vbCritical
 End Select
End If
 MsgBox "Database Created!", vbInformation
 
Proc_Exit:

Exit Sub
Proc_Err:
 MsgBox Err.Number & " " & Err.Description
 Resume Proc_Exit
End Sub



Допустимые значения параметра iVersion

1 - Создает базу данных, которая использует формат файла версии 1.0 Microsoft Jet database engine.
2 - Создает базу данных, которая использует формат файла версии 1.1 Microsoft Jet database engine.
3 - Создает базу данных, которая использует формат файла версии 2.0 Microsoft Jet database engine.
4 - Создает базу данных, которая использует формат файла версии 3.0 Microsoft Jet database engine (совместимый с версией 3.5).
5 - Создает базу данных, которая использует формат файла версии 4.0 Microsoft Jet database engine.
6 - Создает базу данных, которая использует формат файла версии 12.0 Microsoft Jet database engine. (при использовании Microsoft.ACE.OLEDB.12.0)



Создание базы с использованием метода DAO.
С помощью DAO можно также легко изменять структуру данных. Перед использованием DAO необходимо установить ссылку на библиотеку Microsoft DAO 3.6 Object Library, выполнив команды меню Tools | References (Сервис | Ссылки) в VBE.
Если ссылка установлена, DAO готов к использованию.
Для создания с помощью DAO новой пустой базы данных необходимо использовать метод CreateDatabase объекта DBEngine, передав ему значение, содержащее путь и имя создаваемой базы данных.

DBEngine.CreateDatabase(Name, Locale, Option)

Первый параметр - Name и есть путь к создаваемой БД и имя создаваемой БД. Если путь в параметре не указан, то база создаётся в каталоге Мои документы.
Второй параметр - Locate, определяет локализацию БД. От локализации зависит порядок сортировки символьных значений.
Третий параметр - Option, опциональный. Задаёт версию создаваемой БД. По умолчанию БД создаётся той же версии, что и запущенная программа.
Примечание. Поскольку форматы БД Access 2000 и Access 2002-2003 задаются одним и тем же значением параметра (dbVersion40), то в результате получаем базу в формате Access 2002-2003.

'---------------------------------------------------------------------------------------
' Procedure : CreateDataBaseDAO
' DateTime : 02.12.2014 14:24
' Version : 2.0
' Author : DSonnyh
' Purpose : создает новую базу данных с использованием возможностей DAO
'---------------------------------------------------------------------------------------
'
Sub CreateDataBaseDAO(newDB As String, _
 Optional sLocate As String = dbLangCyrillic, 
 Optional iVersion As Integer = dbVersion40)
'По материалам книги "Database Developer's Guide with Visual Basic 6"
'Автор: Rodger Jennings

 Dim dbNew As Database ' создаваемая база
 On Error GoTo Proc_Err
' создание новой базы данных
 Set dbNew = DBEngine.CreateDatabase(newDB, sLocate, iVersion)
 MsgBox "Database Created!", vbInformation

Proc_Exit:

 Exit Sub

Proc_Err:
 MsgBox Err.Description
 Resume Proc_Exit
End Sub



Допустимые значения параметра Locate

dbLangGeneral - английский язык, немецкий язык, французский язык, португальский язык, итальянский язык, и современный испанский язык
dbLangArabic - арабский язык
dbLangChineseSimplified - упрощенный китайский язык
dbLangChineseTraditional - традиционный китайский язык
dbLangCyrillic - русский язык
dbLangCzech - чешский язык
dbLangDutch - нидерландский язык
dbLangGreek - греческий язык
dbLangHebrew - иврит
dbLangHungarian - венгерский язык
dbLangIcelandic - исландский
dbLangJapanese - японский язык
dbLangKorean - корейский язык
dbLangNordic - скандинавские языки (только для версии 1.0 Microsoft Jet database engine)
dbLangNorwDan - норвежский язык и датский язык
dbLangPolish - польский язык
dbLangSlovenian - словенский язык
dbLangSpanish - традиционный испанский язык
dbLangSwedFin - шведский язык и финский язык
dbLangThai - тайский язык
dbLangTurkish - турецкий язык


Допустимые значения параметра Option

dbEncrypt - Создает зашифрованную базу данных.
dbVersion10 - Создает базу данных, которая использует формат файла версии 1.0 Microsoft Jet database engine.
dbVersion11 - Создает базу данных, которая использует формат файла версии 1.1 Microsoft Jet database engine.
dbVersion20 - Создает базу данных, которая использует формат файла версии 2.0 Microsoft Jet database engine.
dbVersion30 - Создает базу данных, которая использует формат файла версии 3.0 Microsoft Jet database engine (совместимый с версией 3.5).
dbVersion40 - Создает базу данных, которая использует формат файла версии 4.0 Microsoft Jet database engine.
dbVersion120 - Создает базу данных, которая использует формат файла версии 12.0 Microsoft Jet database engine.



Более подробно можно посмотреть вот здесь - http://msdn.microsoft.com/en-us/library/office/ff835033%28v=office.14%29.aspx

Примечание: При попытке создать базу с уже существующим именем, будет выдано сообщение об ошибке. Новая база создана не будет!

Категория: Мои статьи | Добавил: sonni-dim (27.09.2018)
Просмотров: 796 | Теги: Access, MDB, Createbase, accdb | Рейтинг: 0.0/0
Всего комментариев: 0
avatar