2013-03-18 2 views
8

У меня есть доступ 2010 базы данных A.mdb со списком таблиц, одна из которых представляет собой связанную таблицу, связанный из другой базы данных Access B.mdb на тот же сервер. Эти базы данных находятся на машине разработки xxx.xxx.xxx.xxx, которая отображается на моем компьютере как R://, и они впоследствии публикуются онлайн на сервере yyy.yyy.yyy.yyy.Обновление Access Связанная таблица использовать путь UNC

Если я хочу работать на базе данных локально, мне нужно изменить ссылку на таблицу. Но если я изменил его с помощью файловой системы (используя «Linked Table Manager»), ссылка станет R://...., и когда я посмотрю страницу ASP, которая запрашивает эти данные, она будет повреждена, потому что путь неправильный. Кроме того, если я меняю ссылку локально, она не будет работать на онлайн-сервере.

Есть ли способ изменить ссылку «программно»? То есть без использования диспетчера связанных таблиц?

Я искал ответ, но я не тот эксперт, я просто понял, что мне нужно написать «Модуль»? «Макро»?

ответ

15

Табличные ссылки могут быть UNC-путями. Например, скажем, у меня есть связанная таблица, указывающая на базу данных по \\192.168.1.2\Public\, которая отображается на диске P:. Если я запустить редактор VBA (Alt + F11), открыть окно (Ctrl +G) и тип ...

?CurrentDB.TableDefs("remoteTable").Connect

... он вернется. ..

;DATABASE=P:\B.accdb

... потому что я указал на диск P:, когда я создал ссылку.

Теперь, если я создать и запустить функцию VBA ...

Function linkToUnc() 
Dim cdb As DAO.Database 
Set cdb = CurrentDb 
cdb.TableDefs("remoteTable").Connect = ";DATABASE=\\192.168.1.2\Public\B.accdb" 
cdb.TableDefs("remoteTable").RefreshLink 
Set cdb = Nothing 
End Function 

... ссылка теперь путь UNC.

К слову, вы можете создавать ссылки UNC в диспетчере связанных таблиц, если вы перейдете в «Сеть», «Имя машины», «Поделиться именем», но это даст вам имя машины (в моем случае \\PICO\Public\B.accdb) ,

+0

Спасибо вам большое! Только один вопрос (новичок здесь): как мне создать функцию VBA? Макро? Модуль? Макрос, связанный с модулем? Бох! Что касается «Browse to Network, Machine Name, ...», на самом деле я не могу этого сделать, потому что по какой-то причине я отказываюсь понять, что не могу видеть машину из Newtwork (я в большой и огромной организации, поэтому доступ ограничен и странный!) –

+1

Создайте новый модуль, а затем просто вставьте код и отредактируйте его. Вы можете запустить эту функцию, щелкнув по первой строке и нажав «[F5]» (или выберите «Выполнить» из строки меню), и вы также можете создать макрос для его запуска (посредством действия «RunCode»). –

+0

Спасибо, я попытался, но он говорит: «Ошибка компиляции: определяемый пользователем тип не определен» ... –

0

Вы можете щелкнуть правой кнопкой мыши на связанной таблице и выбрать Связанный менеджер таблиц. Выберите связанную таблицу, над которой вы хотите работать, и установите флажок в окне, в котором указано: Всегда запрашивайте новое местоположение и нажмите кнопку OK.

Вас спросят о новом месте. Просмотрите и выберите файл и нажмите «ОК».

+0

Привет, Тера, спасибо за ответ, но это именно то, что я не хочу делать. Я редактировал свой вопрос, потому что, возможно, это не так ясно. –

0

Мне нравится настраивать файл DSN в общей папке, доступной с доступом для чтения во всю нашу сеть, а затем использовать связанный менеджер таблиц по пути UNC. Для этого я использую связанный менеджер таблиц и настроил файл DSN на своем рабочем столе. Затем я копирую и перемещаю файл DSN в общий UNC-каталог. Затем я перехожу к Access и удаляю связанную таблицу и воссоздаю связанную таблицу.Для этого после удаления связанной таблицы сделайте следующее:

  1. Я нажимаю на базу данных ODBC -> Ссылка на источник данных, создав связанную таблицу -> ОК.
  2. Нажмите вкладку «Источник данных файла» в окне «Выбор источника данных». В нижней части диалогового окна вы увидите «Имя DSN:», а затем текстовое поле и Новая кнопка. Вы введете весь UNC-путь И имя файла в это текстовое поле (так что это указывает на файл, который вы скопировали на UNC-путь). Например, я ввожу, \ ATD-SERVER1 \ AccessShare \ ContactsApp.accdb.dsn. Затем нажмите «ОК».

Предполагая, что у вас есть разрешения на доступ к серверу, на который вы ссылаетесь, появится диалоговое окно «Таблицы ссылок», после чего вы сможете выбрать свои связанные таблицы! Microsoft не могла сделать это менее интуитивным, если бы попытались.

Смежные вопросы