Автор: Ralph Friedman
Можно ли как-то в Delphi работать с файлами Microsoft Access? Я
слышал что некоторые программисты пробовали, но у них ничего не
получилось.
Из приложений Delphi вы можете получить доступ к .MDB-файлам
Microsoft Access, используя драйверы ODBC. Delphi действительно
может дать все необходимое, но некоторые вещи не столь очевидные.
Вот шаги для достижения вашей цели.
Что вам нужно: Первое: проверьте, установлен ли ODBC
Administrator (файл ODBCADM.EXE в WINDOWS\SYSTEM, вам также
необходим файл DBCINST.DLL для установки новых драйверов и
ODBC.DLL). Администратор ODBC должен присутствовать в Панели
Управления в виде иконки ODBC. Если у вас его не было, то после
установки Delphi он должен появиться. Если вы получаете сообщение
типа "Your ODBC is not up-to-date IDAPI needs ODBC greater then
2.0", у вас имеется старая версия администратора и вы должны
обновить ее до версии, включенной в поставку Delphi. Проверьте,
имеете ли вы доступ к драйверу Access ODBC, установленному в
Windows. Вы можете сделать это, щелкнув на "Drivers" в диалоговом
окне "Data Sources", появляющемся при запуске ODBC Administrator.
Delphi должна в диалоге добавить пункты Access Files (*.mdb) и
Access Data (*.mdb), работающие с файлами Access 1.10 и использующие
драйвер SIMBA.DLL (имейте в виду, что для данного DLL необходимы
также файлы RED110.DLL и SIMADMIN.DLL, устанавливаемые для вас
Delphi). Данные файлы должны поставляться с дистрибутивом вашей
программы как часть ReportSmith Runtime библиотеки. Если вы хотите
работать с файлами Access 2.0 или 2.5, вам необходимо иметь другой
набор драйверов от Microsoft. Ключевой файл - MSAJT200.DLL, также
необходимы файлы MSJETERR.DLL и MSJETINT.DLL. В США набор ODBC
Desktop Drivers, Version 2.0. стоит $10.25. Он также доступен в
январском выпуске MSDN, Level 2 (Development Platform) CD4 \ODBC\X86
как часть ODBC 2.1 SDK. Очевидно есть обновление этих драйверов для
файлов Access 2.5 на форуме MSACCESS CompuServe. Имейте в виду, что
драйвер Access ODBC, поставляемый с некоторыми приложениями
Microsoft (например, MS Office) могут использоваться только другими
MS-приложениями. К сожалению, они могут сыграть с вами злую шутку:
сначала заработать, а потом отказать в совершенно неподходящий
момент! Поэтому не обращайте внимания (запретите себе обращать
внимание!) на строчку "Access 2.0 for MS Office (*.mdb)" в списке
драйверов ODBC Administrator. Вы можете установить новые ODBC
драйверы с помощью ODBC Administrator в Панели Управления.
Добавление источника данных ODBC (Data Source): если у вас
имеются все необходимые файлы, можете начинать. Представленный здесь
пример использует драйвер Access 1.10, обеспечиваемый Delphi.
Используя ODBC Administrator, установите источник данных для ваших
файлов Access: щелчок на кнопке "Add" в окне "data sources" выведет
диалог "Add Data Source", выберите Access Files (*.mdb) (или
что-либо подходящее, в зависимости от установленных драйверов). В
диалоге "ODBC Microsoft Access Setup" необходимо ввести имя в поле
"Data Source Name". В данном примере мы используем "My Test".
Введите описание "Data Source" в поле Description. Щелкните на
"Select Database" для открытия диалога "Select Database". Перейдите
в директорию, где хранятся ваши Access .MDB-файлы и выберите один.
Мы выберем файл TEST.MDB в директории C:\DELPROJ\ACCESS. Нажмите OK
в диалоге "Setup". Теперь в списке источников данных (Data Sources)
должен появиться "My Test" (Access Files *.mdb). Нажмите Close для
выхода из ODBC Administrator. Используя этот метод, вы можете
установить и другие, необходимые вам, источники данных.
Настройка Borland Database Engine: загрузите теперь Borland
Database Engine (BDE) Configuration Utility. На странице "Drivers"
щелкните на кнопке New ODBC Driver. Имейте в виду, что это добавит
драйвер Access в BDE и полностью отдельное управление дополнительно
к драйверам Access в Windows, устанавливаемым при помощи ODBC
Administrator. В открывшемся диалоге Add ODBC Driver в верхнем поле
редактировании введите ACCESS (или что-то типа этого). BDE
автоматически добавит на первое место ODBC_. В combobox,
расположенном немного ниже, выберите Access Files (*.mdb). Выберите
Data Source в следующем combobox (Default Data Source Name), это
должен быть источник данных, который вы установили с помощью ODBC
Administration Utility. Здесь можно не беспокоиться о вашем выборе,
поскольку позднее это можно изменить (позже вы узнаете как это можно
сделать). Нажмите OK. После установки драйвера BDE, вы можете
использовать его более чем с одним источником данных ODBC, применяя
различные псевдонимы (Alias) для каждого ODBC Data Source. Для
установки псевдонима переключитесь на страницу "Aliases" и нажмите
на кнопку "New Alias". В диалоговом окне "Add New Alias" введите
необходимое имя псевдонима в поле "Alias Name". В нашем примере мы
используем MY_TEST (не забывайте, что пробелы в псевдониме
недопустимы). В combobox Alias Type выберите имя ODBC-драйвера,
который вы только что создали (в нашем случае ODBC_ACCESS). Нажмите
OK. Если вы имеете более одного ODBC Data Source, измените параметр
ODBC DSN ("DSN" = "Data Source Name") в списке "Parameters"
псевдонима на подходящий источник данных ODBC Data Source, как
установлено в ODBC Administrator. Имейте в виду, что вы не должны
ничего добавлять в параметр Path (путь), так как ODBC Data Source
уже имеет эту информацию. Если вы добавляете параметр Path,
убедитесь, что путь правильный, в противном случае ничего работать
не будет! Теперь сохраните конфигурацию BDE, выбирая пункты меню
File|Save, и выходите из Database Engine Configuration Utility.
В Delphi: Создайте новый проект и расположите на форме компоненты
Table и DataSource из вкладки Data Access палитры компонентов. Затем
из вкладки Data Controls выберите компонент DBGrid и также
расположите его на форме. В Table, в Инспекторе Объектов, назначьте
свойству DatabaseName псевдоним MY_TEST, установленный нами в BDE
Configuration Utility. Теперь спуститесь ниже и раскройте список
TableName. Вас попросят зарегистрироваться в базе данных Access
MY_TEST. Обратите внимание, что если бюджет не установлен, то User
Name и Password можно не заполнять, просто нажмите на кнопку OK.
После некоторой паузы раскроется список, содержащий доступные
таблицы для ODBC Data Source указанного псевдонима BDE. Выберите
TEST. В DataSource, в Инспекторе Объектов, назначьте свойству
DataSet таблицу Table1. В DBGrid, также в Инспекторе Объектов,
назначьте свойству DataSource значение DataSource1. Возвратитесь к
таблице, и в том же Инспекторе Объектов установите свойство Active в
True. Данные из таблицы TEST отобразятся в табличной сетке. Это все!
Одну вещь все-таки стоит упомянуть: если вы создаете приложение,
использующее таблицы Access и запускаете его из-под Delphi IDE, то
при попытке изменения данных в таблице(ах) вы получите ошибку. Если
же вы запустите скомпилированный .EXE-файл вне Delphi
(предварительно Delphi закрыв), то все будет ОК. Сообщения об
ошибках ODBC, к несчастью, очень туманные и бывает достаточно трудно
понять его источник в вашем приложении, в этом случае проверьте
установку ODBC Administrator и BDE Configuration Utility, они также
могут помочь понять источник ошибки. Для получения дополнительной
информации обратитесь к ODBC 2.0 Programmer's Reference или SDK
Guide от Microsoft Press (ISBN 1-55615-658-8, цена в США составляет
$24.95). В этом документе вы получите исчерпывающую информацию о
возможных ошибках при использовании Access-файлов посредством ODBC.
Также здесь вы можете найти рапорты пользователей о найденных
ошибках, в том числе и при использовании Delphi. Более того, я
выяснил, что большинство описанных проблем возникает при
неправильных настройках ODBC, т.е. те шаги, которые я описал выше.
Надеюсь, что с развитием технологии доступа к базам данных такие
сложности уйдут в прошлое. Кроме того, имейте в виду, что если вам
необходимо создать новую таблицу Access 1.10, вы можете
воспользоваться Database Desktop, включаемый в поставку Delphi.
Авторы данной технологии Ralph Friedman (CompuServe 100064,3102),
Bob Swart и Chris Frizelle.
|