Закройте файл MS Access laccdb, который был открыт с запросом на добавление - PullRequest
0 голосов
/ 25 января 2020

Я выполняю запрос на добавление из VBA в файле интерфейса доступа. запрос выполняется для таблицы, которая находится в другой базе данных, которая не связана с внешним интерфейсом. (это архив данных с подключенной серверной части) вот запрос:

DoCmd.RunSQL "INSERT INTO " & tblNames(i) & " IN '" & archiveFile & "' " & _
                "SELECT " & tblNames(i) & ".* " & _
                "FROM " & tblNames(i) & ""

Я использую массив для циклического перемещения по каждой таблице, которую я хочу заархивировать. и переменная 'archiveFile' передается в качестве параметра в зависимости от того, в какой файл accdb мне нужно отправить данные.

Моя проблема заключается в следующем: оператор sql работает, но когда это делается, файл архива остается заблокированным. Другими словами, laccdb открывается для архивного файла, к которому я добавляюсь, и будет оставаться открытым, пока я не закрою интерфейс (файл, из которого я запускал vba)

мой вопрос; Есть ли способ закрыть это соединение, созданное с помощью "DoCmd.Run SQL", нет ничего, что я открыл, что у меня есть доступ, чтобы закрыть, что я могу сказать. все же что-то создается и остается висеть ... заранее спасибо. Я буду рад уточнить или поделиться своим кодом, если это необходимо. (если есть лучший способ сделать это, я весь слух)

Обновление:

Я попытался выполнить запрос из gui вместо кода VBA и получил те же результаты. Файл laccdb был создан и не мог быть удален, пока я не закрыл интерфейс, из которого был запущен запрос. Я надеюсь, что есть способ вызвать открытые соединения, а затем закрыть их.

1 Ответ

0 голосов
/ 25 января 2020

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

Опять же, я не уверен точно, почему, но установка постоянного соединения с серверной частью, похоже, решила проблему, так что файл архива не перепутан с тем, что мой интерфейс все еще подключен к нему.

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