(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Подключение таблиц Firebird к базе данных MS Access

Источник: mccinet

С выходом стабильной версии 1.0 Open Source ODBC драйвера от IBPhoenix появилась возможность свободно работать с базами данных сервера Firebird. Для этого достаточно лишь установить драйвер. Всю дальнейшую работу можно совершать непосредственно средствами MS Access.

Создать DSN с помощью MS Access VBA можно с помощью функции RegisterDatabase, специально предназначенной для регистрации нового источника данных:

DBEngine.RegisterDatabase <Имя источника данных>, _
                          <Название ODBC драйвера>, _
                          <Выводить или нет окно диалога драйвера ODBC>, _
                          <Список атрибутов>

Имя источника данных следует задавать с некоторой осторожностью, чтобы случайно не испортить какой-нибудь "чужой" DSN. Таким образом, если Вы захотите установить другие значения параметров соединения, процедуру RegisterDatabase нужно наоборот запустить повторно с тем же именем DSN и эти новые значения просто будут перезаписаны поверх старых.

Теперь немного подробнее о других параметрах. Название ODBC драйвера в нашем случае будет "Firebird/InterBase(r) driver". Список атрибутов - это пары параметр=значение, разделенные символами возврата каретки. Описываемый драйвер поддерживает следующие атрибуты соединения:

  • DRIVER: Всегда IscDbc.
  • DBNAME или DATABASE: Указывать обязательно. Местоположение базы данных (имя сервера и имя файла с полным путем либо псевдоним через двоеточие). Например:

    localhost:C:\DB\DataFile.fdb - локально
    127.0.0.1:C:\DB\DataFile.fdb - локально
    172.17.2.10:/usr/local/data/db.fdb - удаленно на *NIX
    192.168.10.20:D:\FIREBIRD\Data.fdb - удаленно на Windows
    192.168.10.20:MyAlias - удаленно (псевдоним)
    MYSERVER:MyAlias - удаленно (псевдоним)

  • CLIENT: Указывать обязательно. Имя файла клиентской библиотеки. Особенно актуально при использовании встраиваемой (embedded) версии сервера.
  • CHARSET или CHARACTERSET: Указывать желательно. Набор символов по умолчанию.
  • READONLY: По умолчанию (=0) подключается к базе данных для чтения/записи. Можно сделать только для чтения (=1).
  • NOWAIT: По умолчанию (=0), транзакция ждет снятия блокировки, если вдруг на неё наткнется. Можно сделать так, чтобы транзакция в такой ситуации сразу завершалась с ошибкой (=1).
  • DIALECT: Указывать обязательно. SQL-диалект базы данных сервера. 1-й диалект используется для совместимости с сервером InterBase 5-й версии. Для сервера Firebird более типичен 3-й диалект, хотя и там можно создавать базы данных в первом диалекте.
  • QUOTED: Эта опция гарантирует совместимость с базами данных, созданными в диалекте 1 (по умолчанию - включена).
  • SENSITIVE: Эта опция устанавливает свойство SQL_IDENTIFIER_CASE. Значение по умолчанию SQL_IC_UPPER. Можно также установить SQL_IC_SENSITIVE. По традиции, и в InterBase и в Firebird используются заглавные буквы.
  • AUTOQUOTED: Если установить, то драйвер будет пытаться самостоятельно заключать в кавычки идентификаторы, что черевато ошибками. Лучше не испытывать судьбу.
  • FILEDSN: При подключении к серверу, Access использует эти ключи в следующей последовательности: сначала используются атрибуты, указанные в строке подключения, затем отсутствующая информация извлекается из указанного FILEDSN или DSN.
  • SAVEDSN: Если этот параметр находится в строке подключения, то параметры успешного подключения, будут сохранены. Пароль сохраняется в зашифрованном виде.

Другие атрибуты (UID, PWD и ROLE) лучше указывать непосредственно в строке подключения, так как для них характерны частые изменения. В итоге, в качестве строки атрибутов может получиться, например, следующее:

DBNAME=localhost:C:\Work\FBTest.FDB
DRIVER=IscDbc
CLIENT=fbclient.dll
CHARSET=WIN1251
READONLY=0
NOWAIT=0
DIALECT=3
QUOTED=0

Дальше, надо подключить объекты базы данных сервера к Вашему приложению либо с помощью команды DoCmd.TransferDatabase с типом преобразования acLink, либо путем создания нового объекта TableDef:

Set NewTableDef = CurrentDB.CreateTableDef("Имя таблицы в БД MS Access")
NewTableDef.Connect = "Строка подключения"
NewTableDef.SourceTableName = "Имя таблицы или представления на сервере"
CurrentDB.TableDefs.Append NewTableDef

И в конце поможем Access'у определить первичный ключ, если он сам его не распознал, что является нормальным явлением при подключении представлений (VIEW):

CurrentDB.Execute "CREATE UNIQUE INDEX PrimaryKey ON " & _
                  "Имя таблицы в БД MS Access" & "(" & _
                  "Список полей первичного ключа" & ")"

Самое сложное здесь - составить строку подключения. В начале обязательно нужно указать "ODBC;", затем - имя созданного источника данных ("ODBC;DSN=<Имя источника данных>;..."), имя пользователя ("...;UID=<Логин>;...") и пароль ("...;PWD=<Пароль>;...") например:

"ODBC;DSN=Firebird Test;UID=SYSDBA;PWD=masterkey;"

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 13.11.2007 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft 365 Business Basic (corporate)
Microsoft Office для дома и учебы 2019 (лицензия ESD)
Microsoft Windows Professional 10, Электронный ключ
Microsoft 365 Apps for business (corporate)
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Мир OLAP и Business Intelligence: новости, статьи, обзоры
Компьютерная библиотека: книги, статьи, полезные ссылки
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100