Excel VBA С помощью базы данных MS Access Следует ли мне закрыть соединение?

#excel #vba #ms-access

Вопрос:

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

То, в чем я не уверен, — это база данных доступа, которую я настраиваю. Это единый файл базы данных, доступ к которому может получить каждый. В настоящее время планируется создать соединение таким образом:

 Dim accessFileLoc As String: accessFileLoc = "C:UsersgmlooOneDriveDesktopGrab ProjectGrabDB.accdb"

'create the connection object, and open the connection
Set accessCon = CreateObject("ADODB.connection")

'i HOPE setting the mode like this will allow multiple users to connect to the same
'db at the same time
accessCon.Mode = 16   3 'adModeShareDenyNone   adModeShareReadWrite
accessCon.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" amp; accessFileLoc
 

accessCon-это глобальная переменная VBA Excel, которая в настоящее время предназначена для удержания соединения до тех пор, пока открыта программа Excel. Мой вопрос в том, вызовет ли это проблемы у других пользователей, которые одновременно запрашивают файл базы данных? Должен ли я закрывать соединение для каждого пользователя, пока оно не требуется, а затем восстанавливать его, когда им нужно выполнить запрос? Вероятно, в любой момент времени их порталом Excel будут пользоваться до 15 человек.

Спасибо за вашу помощь.

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

1. Несколько подключений Excel не должны быть проблемой. Если бы это было так, Access не мог бы быть многопользовательским приложением.

2. Таким образом, несколько пользователей подключаются к единой базе данных доступа, расположенной на одном из C: человека, и каждый человек ссылается на свой собственный C: ? Это не сработает.

Ответ №1:

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