Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 使用安全工作组文件编写访问access文件的脚本_Ms Access - Fatal编程技术网

Ms access 使用安全工作组文件编写访问access文件的脚本

Ms access 使用安全工作组文件编写访问access文件的脚本,ms-access,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 "Syst

我正在尝试编写访问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文件是正确的)

网络上其他地方有很多参考资料说,你只能在应用程序中作为第一件事来做这件事,但这就是我正在做的


我不确定我做错了什么。有什么想法吗?sApp和oApp是一回事吗?你混淆了变量。

我认为你应该直接使用DAO和Jet,而不是自动访问

  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也有一些困难,但事实证明,我只需要确保提供了一个有效的SystemDB供使用。我尝试的第一个非默认版本不起作用,但当我复制默认版本并使用它时,它起作用了

因此,我想看看您的工作组文件是否有正确的文件名/路径,它是否是Jet的正确版本,以及您是否有适当的NTFS权限来打开它。

对“我设置SystemDB也有一些困难”的补充:

这对我很有用:

Set objEngine=CreateObject(“DAO.PrivateDBEngine.36”)

不,我手动输入了另一台机器上的代码——这是一个很好的打字错误,解决了这个问题。我使用应用程序对象的原因是,我试图使用()中显示的脚本,但使用DAO打开数据库,然后在打开时使用应用程序对象打开CurrentDatabase()工作(而它没有使用原始脚本)。我还得检查其余的工作,但我想我在路上。