我有一个密码保护的访问数据库,需要在一夜之间更新。我们编写了一个简单的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
请注意,Path
和Macro
是以字符串形式传递的参数。
答案 0 :(得分:2)
将OpenCurrentDatabase Method数据库密码作为其第三个参数。但是,OpenCurrentDatabase
不会返回任何内容,因此我认为将其返回值分配给accDatabase
并不合理。请尝试这种方式:
accdbObj.OpenCurrentDatabase Path, , "password_here"
Access数据库文件有两种类型的密码。
我写了这个答案的第一部分,假设你的意思是数据库密码。但是,我注意到你提到了用户名,这表明你可能正在使用ULS(用户级安全性)。仅在较旧的MDB db文件格式中支持ULS。使用Access 2007,您可能正在使用不支持ULS的较新的ACCDB格式。
如果您实际使用带有ULS的MDB,则需要使用其他方法来打开数据库。您可以将DBEngine.CreateWorkspace 与您的ULS用户名和密码一起使用,然后在该工作区内调用OpenCurrentDatabase
。