Программное подключение таблиц из внешней базы данных MS Access

Как правило, в процессе эксплуатации и разработки программы достаточно часто возникает необходимость переподключить связанные таблицы к базе данных, находящейся в другом файле или группе файлов. Чаще всего это файлы с теми же именами, расположенные в другом каталоге (рабочая база, учебная база, тестовая база и т.п.).

Использовать для этой цели стандартный Диспетчер связанных таблиц неудобно и небезопасно (можно забыть переключить часть таблиц). В примере (для Access'97) приводится относительно простой вариант реализации такой функции. В его составе два файла: link_tables.mdb (сам пример; эту базу и нужно запускать) и link_tables_db.mdb (это база с таблицами, связь с которыми предполагается установить). После распаковки они должны оставаться в одном каталоге.

Подход здесь используется очень простой. В базе данных (далее БД) программы создаётся таблица, в каждой строке которой содержится вся информация, необходимая для установки связи с внешней таблицей: имя таблицы в программе, имя таблицы во внешней БД (бывает, что они не должны совпадать) и имя файла внешней БД. В дополнение к этой информации может понадобиться пароль для подключения к внешней БД, который из соображений безопасности лучше хранить как-то иначе. Также следует помнить, что права текущего пользователя программы должны обеспечивать возможность доступа к подключаемым таблицам во внешней БД.

Далее достаточно осуществить вызовы функции подключения для каждой строки этой таблицы, передавая туда соответствующие данные. Именно это и реализовано в функции LinkDataBase, которая циклически вызывает функцию AttachTable для подключения внешней таблицы MS Access. Если таблицу подключить по какой либо причине не удаётся, то старая связь (связанная таблица) удаляется, чтобы исключить возможность смешивания данных из разных БД. Сообщение об ошибке, возвращаемое функцией AttachTable, добавляется к итоговому сообщению, которое в конце выводится на экран.

Хотя в данном примере это не реализовано (используется каталог текущей БД), целесообразно организовать хранение перечня каталогов всех доступных БД (например, в ещё одной таблице), чтобы иметь возможность переключаться на другую базу просто выбрав из списка нужный каталог или связанное с ним имя.

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

 


Страница сайта http://silicontaiga.ru
Оригинал находится по адресу http://silicontaiga.ru/home.asp?artId=6105