Доступ к VBA Application.Quit Закрытие нескольких баз данных - PullRequest
1 голос
/ 13 марта 2019

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

  • Копирует внешнюю базу данных из общей сетевой папки на локальный диск пользователя
  • Открывает локальную копию переднего конца БД
  • Закрывает запуск приложения

Этот процесс значительно облегчает мне внедрение обновлений в интерфейс и отлично работает почти для всех. Однако есть пара пользователей, которые испытывают ту же проблему. Когда они открывают приложение запуска, интерфейс копируется на их локальный диск и открывается, но когда вызывается строка «Application.Quit», приложение запуска и интерфейс закрываются.

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

Dim appAccess As Access.Application

    Set appAccess = CreateObject("Access.Application")
    appAccess.OpenCurrentDatabase "C:\Databases\Database1.accdb"
    appAccess.Visible = True
    appAccess.RunCommand acCmdAppMaximize
    Set appAccess = Nothing

    Application.Quit

Спасибо!

Тим

1 Ответ

4 голосов
/ 13 марта 2019

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

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

Dim appAccess As Access.Application
Set appAccess = CreateObject("Access.Application")
appAccess.OpenCurrentDatabase "C:\Databases\Database1.accdb"
appAccess.Visible = True
appAccess.UserControl = True
appAccess.RunCommand acCmdAppMaximize
Set appAccess = Nothing
Application.Quit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...