2011-04-26 135 views
2

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

+3

不要忘记坚持所有用户追了出去。 – 2011-04-26 14:56:18

回答

3

我不知道如果有任何用户在脚本启动时打开数据库会发生什么情况。所以我选择检查是否存在数据库锁定文件,并且只有在锁定文件不存在时才会继续。

这里是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 
+0

谢谢,这很有帮助。我希望我可以将这两个答案标记为已接受的答案。 – Tmdean 2011-04-26 15:56:39

+0

我很确定你不能使用任何带有OLEDB连接的DAO东西。你必须使用ADO。 – Tmdean 2011-04-26 16:23:52

+0

检查LDB文件的存在是数据库是否打开的不好代理,因为LDB文件可以在数据库关闭时存活(例如,当Access崩溃时)。 – 2011-04-29 03:49:45

相关问题