Открытие базы данных MS Access из VB, которая используется другим пользователем - PullRequest
3 голосов
/ 21 июля 2009

Есть ли способ открыть базу данных MS Access из VB 6.0, которая используется другим пользователем.

У меня есть служба, которая обновляет файл .mdb. Я хочу контролировать эту БД, периодически читая некоторые параметры из нее.

Если я попытаюсь просто открыть БД (которая работает, если БД не используется) примерно так:

Private Sub Form_Load()
Dim CurrentDBFileName
On Error GoTo ErrorHandler
    Set BaseDB = OpenDatabase("c:\temp\log_db.mdb")
    Set DestRS = BaseDB.OpenRecordset("current_log_info", dbOpenDynaset)
    DestRS.MoveFirst
    CurrentDBFileName = DestRS!CurrentDB
    BaseDB.Close
ErrorHandler:
    Debug.Print Err.Number; Err.Description
End Sub

Я получаю ошибку:

3051 Ядро базы данных Microsoft Jet не может открыть файл 'b: \ log_db.mdb'. Он уже открыт исключительно другим пользователем, или вам необходимо разрешение на просмотр его данных.

Как я могу обойти это?

Я не могу изменить службу обновления файла MDB, поскольку он не мой.

Ответы [ 2 ]

3 голосов
/ 21 июля 2009

Попробуйте:

Set BaseDB = OpenDatabase("gui_db.mdb", false)

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

0 голосов
/ 29 июля 2009

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

Другим вариантом может быть разделение таблицы mdb, которую вы хотите обновить, на отдельный бэкэнд (либо другая база данных Access, либо SQL Server). Затем, если служба открывает исключительно файл внешнего интерфейса, ваш внутренний файл все равно должен быть предоставлен в общий доступ. Служба обновлений не должна видеть разницу.

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