我正在尝试通过Excel VBA打开一个连接密码保护的AccessDB。
我使用以下连接字符串
conn.Provider = "Microsoft.ACE.OLEDB.12.0"
conn.ConnectionString = "Data Source=dbPath; Jet OLEDB:Database Password=pwd;"
其中dbPath是accdb / mdb文件的路径,pwd是dbfile的密码。密码绝对正确,但我总是收到错误“非有效密码”。 有人可以指导我吗? -SRI。
其他信息: 我正在使用Office 2010并将此数据库保存为mdb(2003)文件(我尝试使用accdb extn保存此文件)。 当我尝试为数据库设置密码时,它会显示msg“使用块密码进行加密与行级锁定不兼容。将忽略行级锁定。” 它与VBA中的错误消息有什么关系吗?
答案 0 :(得分:8)
在Access 2010中,更改了数据库密码的加密方法,并且ADO提供程序的“Jet OLEDB:Database Password”关键字似乎不适用于新方法。在这里,我必须删除密码,进入Access->文件 - >选项 - >客户端设置 - >高级并选中“使用旧版加密”,然后重新创建密码。
我不知道ACE提供程序是否有任何新的OLE DB连接字符串关键字,或者在使用ADO.NET时是否也会出现此问题
答案 1 :(得分:0)
或者你可以这样做。
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath & ";Jet OLEDB:Database Password=" & pwd
答案 2 :(得分:0)
请按如下方式使用
conStr = "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\Users\csub1\Desktop\empdata.xlsx;Persist Security Info=False;Jet OLEDB:Database Password=pass@123;扩展属性='Excel 12.0;HDR=Yes;';Jet OLEDB:System database=C:\Users\csub1\AppData\Roaming\Microsoft\Access\System.mdw"
请找到 System.mdw 文件并在系统数据库下提供它。提供密码时请使用Jet OLEDB:Database Password。
经过大量研究,它奏效了。