Какое правильное «Имя документа» Access ADP / MDB для использования в вызове GetObject («Имя документа»)? - PullRequest
2 голосов
/ 07 июня 2010

Согласно http://support.microsoft.com/kb/288902/en-us

Вы можете прикрепить к конкретному экземпляру если вы знаете название открытого документ в этом случае. За Например, если экземпляр Excel работает с открытой книгой с именем Book2, следующий код придает успешно в этом случае, даже если это не самый ранний случай был запущен:

Set xlApp = GetObject("Book2").Application

Этот пример работает для Excel, главным образом потому, что «Имя документа» почти совпадает с именем файла. Мне нужно, чтобы это работало для Access.

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

Set app = GetObject("c:\my\app\myapp.adp", "Access.Application")

В настоящее время я звоню

Set app = GetObject(, "Access.Application")

и проверьте возвращенное Application.Name. Если это хорошо, я использую его для вызова некоторых функций, если нет, то это не помогает. Я слышал о таблице запущенных объектов, но, поскольку мне нужно получить объект внутри VBScript, это слишком много API-вызовов.

Итог: Какое правильное «Имя документа» Access ADP использовать в вызове GetObject («Имя документа») и какой тип объекта он возвращает?

Ответы [ 2 ]

1 голос
/ 21 декабря 2010

Возвращаясь к этому вопросу, поскольку @phoog опубликовал ответ, мне приходит в голову, что, поскольку Access может иметь только одну открытую базу данных одновременно, вам нужно будет просмотреть каждый экземпляр Access и проверить его CurrentDB.Name. Теперь, с помощью ADP, я не знаю, что вы проверяете вместо этого, но, возможно, это CurrentProject.Path.

Я не верю, что что-то из этого на самом деле касается исходного вопроса, который, кажется, хочет найти экземпляр только с именем файла, но я не думаю, что даже если бы это сработало, это было бы хорошей идеей. Вы можете легко иметь независимые приложения Access, которые возвращают одно и то же имя приложения и имя файла, но хранятся в разных местах в файловой системе.

0 голосов
/ 20 декабря 2010

Вы, вероятно, хотите прочитать это: http://support.microsoft.com/kb/147816

К сожалению, похоже, что «Имя документа» должно быть файлом mdb, поэтому, если вы не знаете путь к файлу, вы не сможете использовать «Имя документа».

Помимо того, что в Excel может быть несколько документов на один экземпляр, Excel также не позволяет открывать два документа с одинаковым именем, даже если они находятся в разных папках, а вы открываете их в разных экземплярах Excel.

С другой стороны (чтобы ответить на комментарий Дэвида-В-Фентона), Access позволяет открывать несколько экземпляров одной и той же базы данных (не говоря уже о разных базах данных с одинаковым именем), если вы не открываете любой экземпляр в эксклюзивном режиме.

Это еще одно свидетельство того, что Excel регистрирует свои документы в ROT и сильно отличается от того, как это делает Access.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...