从VB打开另一个用户正在使用的MS Access数据库

时间:2009-07-21 15:21:57

标签: database ms-access vb6

有没有办法从VB 6.0打开另一个用户正在使用的MS Access数据库。

我有一个更新.mdb文件的服务。我想通过定期读取一些参数来监控这个DB。

如果我尝试简单地打开数据库(如果不使用数据库就可以工作),如下所示:

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 个答案:

答案 0 :(得分:3)

尝试:

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

以共享模式打开数据库。请注意,所有客户端都必须以共享模式打开数据库。

答案 1 :(得分:0)

当然,最好的选择是说服编写updater服务的人确实应该以共享模式而不是独占模式打开数据库。

另一种选择可能是将要更新的mdb表拆分为单独的后端(另一个Access数据库或SQL Server)。然后,如果服务专门打开前端文件,则仍应共享后端文件。更新程序服务不应该能够看到差异。