Ms access odbc driver
Управление источниками данных ODBC
Open Database Connectivity (ODBC) — это протокол, используемый для подключения базы данных Microsoft Access к внешнему источнику данных, например Microsoft SQL Server. В этой статье содержатся общие сведения об источниках данных ODBC, способах их создания и подключения к ним с помощью Microsoft Access. Действия, которые требуется выполнить, зависят от используемых баз данных и драйверов ODBC.
В этой статье
Сведения об источниках данных ODBC
Источник данных — это источник, который содержит данные и сведения о подключении, необходимые для доступа к этим данным. Источником данных может быть сервер SQL Server, реляционная СУБД Oracle, электронная таблица или текстовый файл. Сведения о подключении могут включать расположение сервера, имя базы данных, идентификатор входа, пароль и различные параметры драйвера ODBC, описывающие способ подключения к источнику данных. Эти сведения можно получить у администратора базы данных, к которой нужно подключиться.
В архитектуре ODBC приложения (такие как Access) подключаются к диспетчеру драйверов ODBC, который, в свою очередь, использует конкретный драйвер ODBC (например, Microsoft SQL ODBC) для подключения к источнику данных. В Access источники данных ODBC используются для подключения к внешним источникам данных, у которых нет встроенных драйверов.
Чтобы подключиться к такому источнику данных, выполните указанные ниже действия.
Установите соответствующий драйвер ODBC на компьютере с источником данных.
Определите имя источника данных (DSN) с помощью программы Администратор источников данных ODBC, чтобы сохранить сведения о подключении в реестре Microsoft Windows или DSN-файле, либо с помощью строки подключения в коде Visual Basic, чтобы передать сведения о подключении непосредственно диспетчеру драйверов ODBC.
Машинные источники данных
Машинные источники данных хранят сведения о подключении в реестре Windows на определенном компьютере. Такие источники данных можно использовать только на компьютере, на котором они определены. Есть два типа машинных источников данных: пользовательские и системные. Пользовательские источники данных доступны и отображаются только для текущего пользователя. Системные источники данных могут использовать все пользователи компьютера. Они отображаются для всех этих пользователей и системных служб. Машинные источники данных особенно полезны, когда требуется обеспечить дополнительную защиту, поскольку машинный источник данных могут просматривать только вошедшие в систему пользователи. Кроме того, такой источник нельзя удаленно скопировать на другой компьютер.
Файловые источники данных
Файловые источники данных (также называемые DSN-файлами) хранят сведения о подключении в текстовых файлах, а не в реестре Windows, и, как правило, более гибки в использовании, чем машинные источники данных. Например, файловый источник данных можно скопировать на любой компьютер с подходящим драйвером ODBC, чтобы обеспечить в приложении точность и согласованность сведений о подключении ко всем используемым компьютерам. Кроме того, можно поместить файловый источник данных на отдельный сервер, сделать его общим для нескольких компьютеров в сети и легко управлять централизованными сведениями о подключении.
Некоторые файловые источники данных нельзя сделать общими. Такие источники располагаются на отдельном компьютере и указывают на машинный источник данных. Их можно применять для доступа к существующим машинным источникам данных из файловых источников данных.
Строки подключения
В модуле можно определить форматированную строку со сведениями о подключении. Строка подключения передает сведения о подключении непосредственно диспетчеру драйверов ODBC. Это помогает упростить приложение, устраняя необходимость создания DSN администратором или пользователем перед использованием базы данных.
Дополнительные сведения об интерфейсе ODBC см. в разделе MSDN Справочник программиста по ODBC.
Добавление источника данных ODBC
Прежде чем продолжить, установите подходящий драйвер ODBC для источника данных, к которому нужно подключиться.
Примечание: Для добавления или настройки источника данных ODBC необходимо входить в группу администраторов локального компьютера.
Нажмите кнопку Пуск и выберите пункт Панель управления.
На панели управления дважды щелкните элемент Администрирование.
В диалоговом окне «Администрирование» дважды щелкните элемент Источники данных (ODBC).
Откроется диалоговое окно Администратор источников данных ODBC.
Откройте вкладку Пользовательский DSN, Системный DSN или Файловый DSN в зависимости от типа источника данных, который нужно добавить. Дополнительные сведения см. в разделе Сведения об источниках данных ODBC.
Нажмите кнопку Добавить.
Выберите драйвер, который нужно использовать, и нажмите кнопку Готово или Далее.
Если необходимого драйвера нет в списке, обратитесь к администратору базы данных, к которой нужно подключиться, и узнайте, как получить этот драйвер.
Следуйте указаниям и введите требуемые сведения о подключении в последующих диалоговых окнах.
Для получения дополнительных сведений об отдельных параметрах нажмите кнопку Справка в диалоговом окне ODBC.
Документация
ODBC Microsoft Access для Windows
Этот пример показывает, как настроить источник данных и подключение к базе данных Microsoft ® Access™ с помощью приложения Database Explorer или командной строки. Этот пример использует Драйвер Microsoft Access (*.mdb, *accdb), чтобы соединиться с демонстрационной базой данных Microsoft Access 2016 .
Шаг 1. Настройте демонстрационную базу данных Access .
Можно получить доступ к файлу базы данных-образца, tutorial.accdb , в папке, возвращенной путем ввода этого кода в командной строке.
Щелкните правой кнопкой по файлу базы данных и выберите Properties.
На вкладке General, если опция Read-only выбрана, очистите ее.
Примечание
Чтобы записать данные к базе данных-образцу, гарантируйте, что вы запускаете MATLAB ® как администратор.
Примечание
В зависимости от доступа к версии вы запускаетесь, вы можете должны быть преобразовать базу данных в ту версию. Например, начинаясь в доступе 2007, программное обеспечение включает опцию, чтобы сохранить как *.accdb . Для получения дополнительной информации консультируйтесь со своим администратором базы данных.
Шаг 2. Проверьте установку драйвера.
Драйвер ODBC обычно предварительно устанавливается на вашем компьютере. Для получения дополнительной информации об установке драйвера или поиске и устранении неисправностей установки, свяжитесь со своим администратором базы данных или обратитесь к вашей документации базы данных относительно драйверов ODBC. Для получения информации о Microsoft ODBC Data Source Administrator смотрите Установку драйвера.
Примечание
Database Toolbox™ больше не поддерживает соединение с базой данных с помощью 32-битного драйвера. Используйте 64-битную версию доступа. Или, чтобы соединиться с 32-битной версией доступа, см. https://www.mathworks.com/matlabcentral/answers/235949-how-to-connect-to-32-bit-microsoft-access-database-from-64-bit-matlab. Для получения дополнительной информации о работе с 64-битной версией Windows ® , см. https://www.mathworks.com/products/matlab/preparing-for-64-bit-windows.html.
Шаг 3. Настройте источник данных с помощью приложения Database Explorer.
Настройте демонстрационную базу данных Access как источник данных при помощи приложения Database Explorer. Можно определить местоположение целевой базы данных по PC, запускающему операционную систему Windows или в другой системе, к которой объединяется в сеть PC. Эти инструкции используют Microsoft ODBC Data Source Administrator Version 10.0.16299.15 для английской версии США Microsoft Access 2016 для систем Windows.
Приложение Database Explorer получает доступ к Microsoft ODBC Data Source Administrator автоматически, когда вы конфигурируете источник данных ODBC. В качестве альтернативы можно получить доступ к Microsoft ODBC Data Source Administrator с помощью configureODBCDataSource функция.
Закройте любые находящиеся в открытом доступе базы данных.
Откройте приложение Database Explorer путем нажатия на вкладку Apps на Панели инструментов MATLAB. Затем справа от раздела Apps кликните по стрелке Show more, чтобы открыть галерею приложений. Под Database Connectivity and Reporting нажмите Database Explorer. В качестве альтернативы введите databaseExplorer в командной строке.
В разделе Data Source выберите Configure Data Source> Configure ODBC data source.
В диалоговом окне ODBC Data Source Administrator вы задаете источник данных ODBC.
Совет
При подготовке источника данных ODBC можно задать пользовательское имя источника данных (DSN) или систему DSN. Пользователь DSN характерен для человека, регистрируемого в машину. Только этот человек видит источники данных, которые заданы на пользовательской вкладке DSN. Система DSN не характерна для человека, регистрируемого в машину. Любой человек, который регистрирует в машину, видит источники данных, которые заданы на системной вкладке DSN. Ваша способность настроить пользователя DSN или система, DSN зависит от базы данных и драйвера ODBC, который вы используете. Для получения дополнительной информации свяжитесь с администратором базы данных или обратитесь к документации драйвера ODBC.
На вкладке User DSN нажмите Add. Диалоговое окно Create New Data Source открывает и отображается список установленных драйверов ODBC.
Выберите Microsoft Access Driver (*.mdb, *.accdb) и нажмите Finish.
В диалоговом окне ODBC Microsoft Access Setup для вашего драйвера введите dbdemo как имя источника данных. Введите tutorial database как описание.
Нажмите Select, чтобы открыть диалоговое окно Select Database, где вы задаете базу данных, вы хотите использовать. Для dbdemo источник данных, выберите tutorial.accdb . Если база данных находится в системе, с которой соединяется ваш PC:
Нажмите Network.
В диалоговом окне Map Network Drive задайте папку, содержащую базу данных, которую вы хотите использовать. Гарантируйте, что вы сопоставляете с папкой а не файлом базы данных.
Нажмите Finish.
Нажмите OK, чтобы закрыть диалоговое окно Select Database. В диалоговом окне ODBC Microsoft Access Setup нажмите OK. Диалоговое окно ODBC Data Source Administrator отображается dbdemo источник данных и любые дополнительные источники данных, что вы прибавили вкладку User DSN. Нажмите OK, чтобы закрыть диалоговое окно.
После того, как вы завершаете настройку источника данных, соединяетесь с базой данных Access с помощью приложения Database Explorer или командной строки с нативной связью ODBC.
Шаг 4. Подключение с помощью приложения Database Explorer или командной строки.
Соединитесь с доступом Используя приложение Database Explorer
На вкладке Database Explorer, в разделе Connections, нажимают Connect и выбирают источник данных для связи.
В диалоговом окне связи оставьте пробел полей Username и Password и нажмите Connect.
Приложение соединяет с базой данных и отображениями список своих объектов, такими как таблицы, в панели Data Browser. Вкладка источника данных под названием dbdemo появляется справа от панели. Вкладка источника данных содержит пустой SQL Query и панели Data Preview.
Выберите таблицы в панели Data Browser, чтобы запросить базу данных.
Закройте вкладку источника данных, чтобы закрыть SQL-запрос. В разделе Connections закройте соединение с базой данных путем нажатия на Close Connection.
Примечание
Если многочисленные связи открыты, закрывают соединение с базой данных по вашему выбору путем выбора соответствующего источника данных из списка Close Connection.
Соединитесь с доступом Используя драйвер ODBC и командную строку
Соединитесь с базой данных с именем источника данных ODBC. Например, этот код принимает, что вы соединяетесь с источником данных под названием dbdemo с пустым именем пользователя и паролем.
Access ODBC Driver
Are you tied into stale business processes that actually restrict your access to the data that drives your business?
The Easysoft ODBC-Access Driver is simply the solution for you if you need to connect either a 32-bit or 64-bit application on either Linux or Unix to Microsoft Access databases.
It’s fast and highly reliable, and to make things as easy as possible for you, our Microsoft Access ODBC driver supports both the MDB and ACCDB database formats.
Along with our great ODBC driver, you can also take advantage of our support team team too, here to help you with any difficulties or questions that you may have.
ODBC Driver for Access 2000, 2002, 2003 2007, 2010 and 2013, 2016 and 2019 Databases (.mdb and .accdb)
The Easysoft ODBC-Access Driver connects 32-bit and 64-bit applications on Linux and Unix to Microsoft Access databases.
To ensure compatibility with databases created in as many versions of Access as possible, the Easysoft ODBC-Access Driver supports both the MDB and ACCDB database formats. The Easysoft ODBC-Access Driver can connect to .mdb databases created in Access 2000–2003 and later. The Easysoft ODBC-Access Driver can also connect to .accdb databases, which is the default format for databases created in Office Access 2007 and later. The Easysoft ODBC-Access Driver is a flexible, future-proof solution therefore, which will integrate Linux/Unix with whatever version of Access suits your organisation best.
The Easysoft ODBC-Access Driver provides read-write access to Access databases, so your Linux/Unix applications can update as well as retrieve Access data. If you need to restrict users to read-only access, you can configure the driver to open the database in read-only mode, just as you can with the Access front-end application on Windows.
Choosing the Easysoft ODBC-Access Driver to connect Linux/Unix with Access will not disrupt your existing Access solution’s environment or users. There is no software to install on your Windows machines. You do not need to change where your database file is located. The Easysoft ODBC-Access Driver can open an Access database stored on a Windows share, so there is no need to copy the database file to your Linux/Unix machine. To ensure concurrent access to the database by Windows and Linux/Unix users is problem free, the Easysoft ODBC-Access Driver uses Access’ locking file mechanism. The driver will also prevent its users from opening a database if another user has the database opened for exclusive access, again mirroring the Access front-end’s behaviour for seamless integration.
The Easysoft ODBC-Access Driver supports encrypted/encoded .mdb files, which is an Access security feature that protects Access data from unauthorised viewing. When you use the Easysoft ODBC-Access Driver to load a remote .mdb file, encrypting/encoding the database protects the privacy of the Access data as it is sent across the network.
To ensure compatibility with multiple Linux/Unix applications, the Easysoft ODBC-Access Driver supports the unixODBC driver manager. Most (if not all) Linux/Unix applications support unixODBC, which, as a mature, non-proprietary, robust driver manager, is part of the standard installation of many Linux distributions. To provide a self-contained solution, the Easysoft ODBC-Access Driver distribution itself includes the unixODBC driver manager. To get you going quickly, the Easysoft ODBC-Access Driver automatically installs itself into unixODBC, making the driver immediately available to your applications.
Diagram
Platforms
The Easysoft ODBC-Access Driver is currently available on these platforms:
Ms access odbc driver
Я пытаюсь открыть программу в первый раз на Windows XP Pro, которая использует PostgreSQL 9. Я получаю сообщение об ошибке:
Проблема возникла при попытке войти в систему или создать производственной базы данных. Подробности: [Microsoft] [Менеджер драйверов ODBC] Данные имя источника не найдено и указанный драйвер по умолчанию не указан
В моем диспетчере ODBC у меня есть список пользовательских DSN и системных DSN. Я попытался установить драйвер postgres odbc, чтобы убедиться, что это поможет, но это не так.
В файле программы есть файл connect.dat с строкой с надписью «OLE DB Prov .
Я не знаю, какое имя провайдера нужно вставить, чтобы это нормально работало. Я провел обширные исследования этой ошибки безрезультатно. Любые предложения были бы с благодарностью.
Относительно ошибки: [Microsoft] [Менеджер драйверов ODBC] Имя источника данных не найдено, и драйвер по умолчанию не указан.
Эта ошибка означает, что имя источника данных (DSN), которое вы указываете в конфигурации вашего подключения, не содержится в реестре Windows.
** Важно, чтобы ваш исполняемый файл и формат привязки ODBC (ELF) были такими же, как ваше приложение. Другими словами, вам понадобится 32-разрядный драйвер для 32-разрядного приложения или 64-разрядный драйвер для 64-разрядного приложения.
Если они не совпадают, можно настроить DSN для 32-битного драйвера и при попытке использовать этот DSN в 64-разрядном приложении DSN не будет найден, потому что реестр содержит информацию о DSN в разных местах в зависимости от ELF (32-бит и 64-бит).
Убедитесь, что вы используете правильный инструмент администратора ODBC. В 32-разрядной и 64-разрядной версиях Windows, администратор ODBC по умолчанию находится в каталоге c:WindowsSystem32odbcad32.exe. Однако на 64-битной машине Windows по умолчанию используется 64-разрядная версия. Если вам нужно использовать 32-разрядный инструмент администратора ODBC в 64-битной системе Windows, вам нужно будет запустить найденный здесь: C:WindowsSysWOW64odbcad32.exe
Где я вижу, что это отключает людей, когда пользователь использует 64-разрядный администратор ODBC по умолчанию для настройки DSN; думая, что это для 32-битного DSN. Затем, когда 32-разрядное приложение пытается подключиться с использованием этого DSN, происходит «Источник данных не найден. «.
** Также важно удостовериться, что орфография DSN соответствует настройке настроенного DSN в ODBC-администраторе. Одно неправильное письмо – это все, что требуется для того, чтобы DSN был несовместим.
Возможно, это не тот же товарный бренд, который у вас есть; это общая проблема, возникающая при использовании имен источника данных ODBC.
Что касается части поставщика OLE DB вашего вопроса, это похоже на аналогичную проблему, когда приложение не может найти конфигурацию для указанного поставщика.
Вопрос: Как исправить ошибку «Источник данных не найден и не указан драйвер, используемый по умолчанию»?
Ответ: Если при запуске программа выдала окно с ошибкой (рисунок 1), то необходимо выполнить следующие действия.
Рис. 1 – Окно ошибки подключения источника базы данных
- Если на Вашем компьютере установлена операционная система Windows не старше Windows 7 32-бит, нужно открыть окно «Панель управления», выбрать команду «Администрирование» (рисунок 2).
Рис. 2 – Окно «Панель управления»
В окне «Администрирование» выбрать команду «Источники данных (ODBC)» (рисунок 3).
Рис. 3 – Окно «Администрирование»
В открывшемся окне «Администратор источников данных ODBC» на вкладке «Пользовательский DSN» проверить какое имя используется для «Microsoft Access Driver (*.mdb) или Microsoft Access Driver (*.mdb, *.accdb)». Если используется имя «MS Access Database», то необходимо добавить имя «База данных MS Access» и наоборот, если используется имя «База данных MS Access», то необходимо добавить имя «MS Access Database». Для этого необходимо нажать кнопку «Добавить» (рисунок 4).
Рис. 4 – Окно «Администратор источников данных ODBC»
В открывшемся окне «Создание нового источника данных» необходимо выбрать «Driver do Microsoft Access (*.mdb)» (рисунок 5).
Рис. 5 – Окно «Создание нового источника данных»
И в поле «Имя источника данных» написать соответствующее имя источника данных (База данных MS Access или MS Access Database) (рисунок 6а, 6б).
Рис. 6а – Окно «Установка драйвера ODBC для Microsoft Access»
Рис. 6б – Окно «Установка драйвера ODBC для Microsoft Access»
Если на Вашем компьютере установлена операционная система Windows 7 64-бит и выше, нужно в папке «С:WindowsSysWOW64» запустить файл odbcad32.exe (рисунок 7).
Рис. 7 – Запуск программы odbcad32.exe для Windows 7 64-бит и выше
В результате откроется окно «Администратор источников данных ODBC» (рисунок 8) и нужно выполнить действия, показанные ранее на рисунках 4-6.
Рис. 8 – Окно «Администратор источников данных ODBC» для Windows 7 64-бит и выше
По всем возникающим вопросам можете звонить на телефон +7 (903) 724-8760, +7 (495) 724-8760, +7 (985) 154-9069 .
При подготовке документа к загрузке или сопоставлении номенклатуры может появиться ошибка «Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers):[Microsoft][Диспетчер драйверов ODBC]: Источник данных не найден и не указан драйвер, используемый по умолчанию».
Причина
На компьютере не установлен драйвер для работы с DBF-файлами.
Решение №1
- Определите разрядность конфигурации 1С, которая используется на компьютере.
- Выясните, установлен ли на компьютере пакет MS Office. Если установлен, так же определите его разрядность.
При использовании клиент-серверной версии 1С, проверку нужно выполнять на компьютере, где установлена серверная часть.
Если на компьютере:
- 1С x86, а MS Office x86 или не установлен — установите драйвер x86;
- 1С x64, а MS Office x64 или не установлен — установите драйвер x64;
- 1С x64, а MS Office x86 — установите драйвер x64.
Установку драйвера нужно запускать через командную строку с ключом «passive».
Сопоставление DBF невозможно, если:
- 1С x86, а MS Office x64;
- Используется клиент-серверная версия 1С: клиентская часть запущена на компьютере с ОС Windows, а сервер под управлением ОС, отличной от Windows.
В этих случаях воспользуйтесь следующим решением.
Решение №2
Если подходящего драйвера не найдено, то воспользуйтесь стандартным местом для хранения сопоставлений номенклатуры в 1С. В зависимости от конфигурации 1С это может быть регистр сведений «НоменклатураКонтрагентов» или справочник «НоменклатураПоставщиков».
- В файле настроек конфигурации определите место хранения номенклатуры контрагентов в 1С по параметру «НоменклатураПоставщиков». В нем должна быть указана ссылка на регистр сведений или ссылка на справочник.
- Настройте хранение результатов сопоставления номенклатуры в справочнике/регистре сведений. Для этого в файле настроек конфигурации в параметре «ФормаРаботыСНоменклатуройПоставщика» укажите значение:
- Если параметр «НоменклатураПоставщиков» содержит ссылку на регистр сведений, укажите форму работы «СопоставлениеНоменклатуры_Регистры».
Access и ODBC (часть 1)
Для начала
ODBC (Open DataBase Connectivity) — это открытый интерфейс доступа к базам данных, разработанный фирмой Microsoft. Он представляет собой API довольно низкого уровня и предназначен, в основном, для прямого использования в программах, написанных на C, C++ или, в крайнем случае, на VB. Несмотря на своё происхождение, этот интерфейс является кроссплатформным и с успехом работает и в Windows, и в UNIX/Linux, и в MacOS.
Нет ничего невозможного и в том, чтобы воспользоваться функциями этого замечательного интерфейса из VBA Access. Надо только ясно представлять себе, что большая часть работы уже и так проделана разработчиками MS Access. Для того, чтобы понять, что же осталось на нашу долю, рассмотрим более подробно сам механизм ODBC.
Как это работает
За относительно долгую историю ODBC API про него написано уже достаточно статей и даже книг, в которых подробнейшим образом описано из чего состоит, как работает этот интерфейс и как им пользоваться. Нам будет вполне достаточно лишь общего представления о его структуре.
Итак, для нас ODBC — это, прежде всего, Менеджер драйверов ODBC (для платформы Win32 это odbc32.dll). Драйверы непосредственно взаимодействуют с источниками данных. Что это за драйверы и как осуществляется такое взаимодействие для нас не важно. Просто, когда мы хотим получить доступ, например, к MS SQL Server 7.0, то нужно установить драйвер MS SQL Server 7.0, когда к серверу MySQL — драйвер MySQL.
Работа с Менеджером драйверов ODBC (далее — просто Менеджер) заключается в вызове необходимых функций с определёнными параметрами и в определенной последовательности. В функции Менеджера входит:
- установка и завершение связи с источником данных (сервером БД);
- подготовка и выполнение SQL-операторов;
- получение результатов и навигация по полученным наборам записей, если имеется такая возможность;
- управление транзакциями;
- идентификация ошибок;
- получение различной вспомогательной информации и прочие функции.
Для выполнения этих функций Менеджер вначале должен подготовить некоторые системные ресурсы:
- Идентификатор окружения HENV. Он указывает на область памяти для общей информации (сведения обо всех соединениях с базами данных, информация о том, какое соединение является текущим и т.п.).
- Идентификатор соединения HDBC. Этот идентификатор указывает на область памяти для информации о конкретном соединении. Идентификатор соединения ассоциируется с единственным идентификатором окружения, в то время как этот идентификатор окружения может иметь несколько связанных с ним идентификаторов соединения.
- Идентификатор оператора HSTMT. Он указывает на область памяти для информации об SQL-операторе. Идентификатор оператора связан с единственным идентификатором соединения. Идентификатор соединения может иметь более одного связанного с ним идентификатора оператора.
В конце Менеджер должен освободить эти ресурсы и вернуть их системе.
С точки зрения программы на VBA, все эти идентификаторы — просто переменные типа Long, в которых хранятся адреса соответствующих областей памяти. При выделении ресурсов идентификатору, его переменная передаётся в специальную функцию по ссылке. При последующем использовании — по значению.
Немного практики
Перво-наперво, создадим отдельный модуль, в котором будем держать все объявления констант, функций, типов и переменных, так или иначе связанных с ODBC API. Бесхитростно назовём его «ODBC_API» и, для начала, включим следующие строки:
Здесь SQLDrivers и SQLDataSources уже не просто выполняют сервисные функции, а позволяют получить конкретные данные об установленных в операционной системе драйверах ODBC и именах источников данных (DSN — DataSource Name). Выглядят объявления этих функций довольно громоздко, но далее я подробно их опишу.
Так как эти функции получают информацию непосредственно от Менеджера, потребность в выделении ресурсов на соединение и операторы отсутствует. Достаточно лишь инициализировать идентификатор окружения HENV. Сделать это лучше всего, создав специальный модуль класса. Почему? Потому, что выделение и освобождение ресурсов можно осуществить, соответственно, в конструкторе (Class_Initialize) и деструкторе (Class_Terminate) класса и, тем самым, исключить ситуацию, когда при сбросе программы функция освобождения ресурсов SQLFreeEnv не будет вызвана. Итак, назовём его ODBC_HENV:
Теперь, при создании экземпляра класса, будет происходить выделение ресурсов окружения, а при уничтожении — их освобождение. Это очень похоже на работу с сеансом (Workspace) MS Assess. На этом подготовку можно считать законченной. Перейдём к следующему этапу — получению какой-нибудь полезной информации с помощью ODBC API.
Например, попробуем получить списки всех зарегистрированных драйверов и источников данных. Именно зарегистрированных, потому что эта информация просто читается из реестра Windows или из определённых конфигурационных файлов. Если физически удалить файл драйвера, то он всё равно останется в списке, но при попытке обращения к нему Менеджер будет выдавать ошибку. Аналогично, если новый драйвер просто скопировать в системную папку Windows, он не появится в списке установленных драйверов и работать с ним будет невозможно. Именно поэтому, драйверы ODBC обычно комплектуются специальной программой установки.
Чтобы получить интересующие нас списки, есть пара объявленных ранее функций: SQLDrivers и SQLDataSources. Они настолько похожи, что рассматривать я буду только первую из них, хотя использоваться будут обе. Первым параметром в ней идёт идентификатор окружения. Будем считать, что он у нас уже есть:
Дальше идёт параметр Direction. Он определяет порядок просмотра результирующего множества. И надо сказать, что и другие функции ODBC, работающие с наборами записей, устроены аналогично. Когда мы хотим получить первый элемент набора, надо передать в функцию значение SQL_FETCH_FIRST, следующее — SQL_FETCH_NEXT, предыдущее — SQL_FETCH_PRIOR и т.д.
Потом следуют два блока из трёх параметров каждый, которые служат для получения собственно информации о драйверах. Первый блок — название драйвера, второй — список атрибутов. Не пугайтесь, для этого списка не понадобится последовательный вызов ещё какой-нибудь функции. Имена атрибутов и их значения перечислены через стандартный для языка С (а именно на этот язык и рассчитан интерфейс ODBC в первую очередь) код завершения строки — 0 (ноль). В первом параметре каждого из двух блоков передаётся строка определённой длины, специально выделенная заранее:
Второй параметр — длина этой строки. Он не позволит функции сформировать слишком длинную строку, испортив при этом соседние ячейки памяти. В нашем случае — это просто MAX_DATA_BUFFER. Третьим идёт указатель на целое число, в которое функция запишет, сколько она на самом деле использовала символов в отведённой строке:
Вот и вся премудрость. Дальше — дело техники: в цикле заполняем пару таблиц данными о драйверах (название и атрибуты) и источниках данных (имя и название драйвера), а потом выводим их содержимое с помощью простенькой формы. Полностью пример для Access’97 можно взять здесь.