1

我有一个受密码保护的访问数据库,需要在一夜之间更新。我们编写了一个精简的 Java 应用程序,它接受一些参数(即宏、路径、文件类型等),然后通过命令行执行 VBScript。所以我有办法“存储”用户名和密码,然后将其传递给 VBScript,但到目前为止,我还没有找到任何其他真正解决我问题的帖子。这是使用宏打开访问数据库的示例代码,我需要让它接受用户名和密码。

    Set accdbObj = Wscript.CreateObject("Access.Application")
    accdbObj.Application.Visible = True

    Message = ("Access Password Update Started With Macro...")
    LogInformation Message, Path

    accDatabase = accdbObj.OpenCurrentDatabase(Path)
    accdbObj.Run Macro

    accdbObj.Terminate
    Wscript.Quit

请记住,PathandMacro是作为字符串传入的参数。

4

1 回答 1

2

OpenCurrentDatabase 方法提供您的数据库密码作为其第三个参数。但是,OpenCurrentDatabase不返回任何内容,因此我认为将其返回值分配给accDatabase. 试试这种方式:

accdbObj.OpenCurrentDatabase Path, , "password_here"

Access db 文件有两种类型的密码。

  1. 数据库密码:所有用户必须提供的密码才能打开数据库
  2. 用户级安全密码:每个已定义用户的单独密码

假设您的意思是数据库密码,我写了这个答案的第一部分。但是,后来我注意到您提到了用户名,这表明您可能正在使用 ULS(用户级安全性)。ULS 仅在较旧的 MDB db 文件格式中受支持。对于 Access 2007,您可能正在使用不支持 ULS 的较新的 ACCDB 格式。

如果您实际上是在使用带有 ULS 的 MDB,则需要另一种方法来打开数据库。您可以将DBEngine.CreateWorkspace与您的 ULS 用户名和密码一起使用,然后OpenCurrentDatabase在该工作区中调用。

于 2013-04-18T13:32:56.167 回答