Автоматическое подключение внешних таблиц, полученных при разбиении исходной базы данных на таблицы и объекты
Автор: Дмитрий Сонных sonni-dim@mail.ru
После того, как я несколько раз получил письма приблизительно следующего содержания: " ... я разделил, как мне рекомендовали, базу на две части - одну с кодом, другую с таблицами и теперь не могу перенести её на другой компьютер (диск, раздел). Что делать?..." я решил сесть и написать пример, который бы позволил начинающим программистам на Accesse решить эту проблему.
Для чего разделяют базы? Для того, чтобы при модификации кода, разработке новых форм и отчетов можно было легко заменить файл с кодом и оставить базу с таблицами нетронутой. (Разбиение производится так же при построении сетевых систем, но это мы оставим в стороне)
Следующие действия приводят к разделению базы данных на два файла, в одном из которых содержатся таблицы, а в другом запросы, формы, отчеты, макросы и модули.
1 Выберите в меню Сервис команду Надстройки и подкоманду Разделить базу данных.
2 Выполните действия, заданные в окнах диалога мастера по разделению баз данных.
После разделения получаются два файла, один из них будет иметь старое имя и в нем будет содержаться програмный код, запросы, формы, отчеты, а другой будет иметь имя "ИмяБазы_be.mdb", и в нем будут содержаться таблицы с данными.
Если теперь в базе с кодами открыть закладку "Таблицы", то возле всех таблиц с данными будут стоять маленькие жирные стрелочки, которые показывают, что данные таблицы подключены из внешней базы. После этого попытки перенести базу с данными на любой другой компьютер (если не сохранять структуру каталогов), в другой раздел, на другой диск - терпят неудачу. Дело в том, что при создании линка, жестко прописывается путь к файлу базы, и при изменении расположения этого файла связи рвутся. Их можно восстановить программно или вручную, используя Файл -> Внешние данные -> Связь с таблицами (только с начала надо отключить старые связи удалив ссылки на таблицы).
Предлагаемый пример позволяет автоматизировать подключение базы с таблицами к базе с кодом. Необходимо соблюдать только одно условие: файл с кодом и файл с таблицами должны находится в одном разделе. Теперь достаточно в секции Form_Load загружаемой формы установить вызов подпрограммы SetReferencesA и программа сама найдет базу с таблицами и подключит все таблицы, находящиеся в базе.
Ограничения: такой способ не годится для сетевых версий программ, т.к. в этом случае база с таблицами располагается на сервере и требуется явно указать путь к ней. Хотя саму подпрограмму подключения всех таблиц из указанной базы можно использовать.
Как подключать таблицы в сетевых разработках можно посмотреть на примере базы Uchet.zip расположенной на http://am.rusimport.ru/MSAccess/topic.aspx?ID=320
Используемые источники: кусочки кодов из программ Александра Юраги (Alex) и Derevyankin Alexander.
Всего хорошего, Дмитрий С. (aka Joss) banderlogi@bk.ru
MSA-2003 ( 83 kB)