在独占模式下打开Access数据库

4

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


3
别忘了带上棍子把所有的用户赶出去。 - H H
2个回答

4

我不知道当你的脚本启动时,如果有用户正在使用数据库会发生什么。所以我选择检查数据库锁定文件的存在,并且只有在锁定文件不存在时才继续执行。

这里是DoSomethingExclusively.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。 - Tmdean
检查LDB文件是否存在并不是判断数据库是否打开的好方法,因为LDB文件可以在关闭数据库后存活(例如,当Access崩溃时)。 - David-W-Fenton
它可能因为非危险原因而保留,例如文件位于用户缺少删除权限的文件夹中(因此当所有用户退出时,LDB文件不会被删除)。尝试强制删除LDB文件。如果出现错误,则有人正在使用它; 如果成功,则每个人都已退出。 - David-W-Fenton

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接