使用安全工作组文件对Access文件进行脚本访问

时间:2011-05-12 08:56:51

标签: ms-access

我正在尝试脚本访问Access数据库以在命令行上使用。 Access数据库使用工作组文件进行保护。

Dim oApp, sWGF,myWS
Set sApp = CreateObject("Access.Application")
set sWGF = "C:\Users\Alan\Documents\Secured.mdw"
oApp.DBEngine.SystemDb = sWGF
WScript.echo "Workgroup " & sWGF
WScript.echo "SystemDb " & oApp.DBEngine.SystemDb
Set myWS = oApp.DBEngine.CreateWorkspace("New","Name","Password")

此代码输出工作组的Secured.mdw文件名,但SystemDB的默认System.mdw文件名作为两个WScript.echo命令的输出。它也无法创建工作区,说明名称和密码错误(尽管它们对于Secured.mdw文件是正确的)

网上其他地方有很多引用说你只能在应用程序中做第一件事,但这就是我正在做的事情。

我不确定我做错了什么。任何想法

3 个答案:

答案 0 :(得分:2)

我认为你应该直接使用DAO和Jet,而不是自动化Access。

  Dim objEngine
  Dim strWorgroup
  dim wrkWorkspace
  Dim db

  Set objEngine = CreateObject("DAO.DBEngine.36")
  objEngine.SystemDB = "C:\Users\Alan\Documents\Secured.mdw"
  Set wrkWorkspace = objEngine.CreateWorkspace("", "Name", "Password")
  Set db = wrkWorkspace.OpenDatabase("C:\MyDatabase.mdb")

这将绕过Access本身并直接使用Jet数据库引擎,这对我来说似乎更简单。

在测试中,我在设置SystemDB方面遇到了一些困难,但事实证明我必须确保提供一个有效的使用。我试过的第一个非默认的不起作用,但是当我制作了默认的副本并使用它时,它起作用了。

所以,我想看看你的工作组文件是否有正确的文件名/路径,如果它是正确的Jet版本,并且你有相应的NTFS权限来打开它。

答案 1 :(得分:0)

sApp和oApp是一样的吗?你混淆了变量。

答案 2 :(得分:0)

“我在设置SystemDB时遇到了一些困难”的后期补充:

这对我有用:

Set objEngine = CreateObject("DAO.PrivateDBEngine.36")