Ms access 以独占模式打开Access数据库

Ms access 以独占模式打开Access数据库,ms-access,vba,vbscript,Ms Access,Vba,Vbscript,我希望能够编写一个脚本,以独占模式打开Access数据库,这样我就可以刷新其中的信息,而不用担心其他用户在不一致的状态下访问数据库。有没有办法使用VBA或通过使用VBScript的COM接口来实现这一点?根据,您应该在连接字符串中添加一个“Mode=Share Exclusive”。我不知道在脚本启动时,如果有用户打开了数据库,会发生什么情况。因此,我选择检查是否存在数据库锁文件,并仅在锁文件不存在时继续 以下是dosomethingeexclusively.vbs: Option Explic

我希望能够编写一个脚本,以独占模式打开Access数据库,这样我就可以刷新其中的信息,而不用担心其他用户在不一致的状态下访问数据库。有没有办法使用VBA或通过使用VBScript的COM接口来实现这一点?

根据,您应该在连接字符串中添加一个“Mode=Share Exclusive”。

我不知道在脚本启动时,如果有用户打开了数据库,会发生什么情况。因此,我选择检查是否存在数据库锁文件,并仅在锁文件不存在时继续

以下是dosomethingeexclusively.vbs:

Option Explicit

Dim strFolder
Dim strMdb
Dim strLckFile
Dim objFSO
Dim appAccess

strFolder = "C:\Access\webforums\"
strMdb = "whiteboard2003.mdb"
strLckFile = "whiteboard2003.ldb"

Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not (objFSO.FileExists(strFolder & strLckFile)) Then
    Set appAccess = CreateObject("Access.Application")
    appAccess.OpenCurrentDatabase strFolder & strMdb, True
    '* do something here; this just adds a row with current time *'
    appAccess.CurrentDb.Execute _
        "INSERT INTO foo (bar) VALUES ('" & CStr(Now()) & "');" 
    appAccess.Quit
    Set appAccess = Nothing
End If
Set objFSO = Nothing

别忘了用棍子把所有的用户都赶出去。我很确定你不能在OLEDB连接上使用任何DAO的东西。您必须使用ADO。检查LDB文件是否存在是数据库是否打开的一个不好的代理,因为LDB文件可以在数据库关闭后保存(例如,当访问崩溃时)。它可能会因为非危险的原因而保留,例如文件位于用户没有删除权限的文件夹中(因此,当所有用户退出时,LDB文件不会被删除)。尝试杀死LDB文件。如果它出错,则有人在其中;如果成功,则所有人都退出。