Как принудительно закрыть приложение Access, когда пользователь потерял соединение с серверной частью

#ms-access #vba

#ms-access #vba

Вопрос:

Вопрос: Есть ли какой-нибудь способ принудительно закрыть доступ, чтобы для выхода не требовался доступ к серверной части?

Ситуация: у меня есть база данных Access 2016. Серверная часть находится на сетевом общем диске, который доступен только при подключении к локальной сети или через VPN. При загрузке происходит проверка ping на сервере, если обнаруживается, что он копирует таблицы в локальные таблицы, если нет, он просто сообщает пользователю, что не может подключиться, и продолжает использовать старые данные. Пользователи много путешествуют и не всегда могут подключаться к VPN, поэтому идея заключается в том, что имеющимся у них данным не более нескольких дней. Кстати, я упоминал, что пользователи являются только потребителями информации, а не участниками, поэтому меня не волнует, что они не могут записывать в серверную часть. Таблицы содержат несколько записей 100k, приложение просто помещает их в удобные для поиска отчеты и перекрестные ссылки.

Проблема: хотя это загружается и работает действительно хорошо, независимо от того, подключены они к локальной сети или нет, оно НЕ закроется, если у них нет подключения к серверу. Это не выдает ошибку, с которой я мог бы легко справиться, она просто зависает. Диспетчер задач даже не закроет его.

Попытки решения: я попытался разорвать связь с таблицами и просто использовать временное подключение к серверной части для загрузки таблиц, когда они мне понадобятся в начале, однако это означало, что Центр доверия Microsoft запрашивал пользователя примерно 8 раз при каждой загрузке, если только я не попросил каждого из них самостоятельно открыть серверную базу данных, дать им пароль для этого, и ничего из этого не практично.

Комментарии:

1. Сохраните шаги импорта, чтобы скопировать таблицы из серверной части в свою базу данных. Попросите их запустить сохраненный импорт при подключении к VPN, чтобы таблицы были скопированы. Таким образом, вы никогда не связываете их, и он не должен запрашивать данные Центра доверия.

Ответ №1:

Access плохо работает с удаленным BE .. если вы хотите быть на удаленной стороне с Access, у вас есть 2 варианта :

  • Подключитесь через RDS .. пользователь подключается к серверу через удаленный рабочий стол .. все «локально» .. так что теперь проблемы с потерянными соединениями … пока соединение RDP поддерживается, все проходит гладко, и, что более важно, у вас нет отключений, которые приводят к повреждению или потере данных (подсказка: при использовании технологии RemoteApp конечному пользователю будет казаться, что он / она работает локально…я использую его, и это здорово)
  • Переключить BE…as я сказал, неразумно использовать доступ через удаленный connection..in чтобы сделать это, переключитесь на MsSQL / MySQL / PostGre…etc предоставит вам реальную возможность удаленного подключения

Комментарии:

1. Я пытался поместить это в базу данных SQL, но не смог авторизовать ее. Если бы у меня была база данных SQL, к которой у меня был доступ, я бы вообще не использовал Access.

Ответ №2:

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