我正在尝试脚本访问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文件是正确的)
网上其他地方有很多引用说你只能在应用程序中做第一件事,但这就是我正在做的事情。
我不确定我做错了什么。任何想法
答案 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")