#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:
Вас должно устраивать одновременное подключение нескольких пользователей. Однако из-за проблем с памятью и производительностью я бы рекомендовал вам закрывать соединение после каждого запроса.