【问题标题】:Excel ADODB VBA error msg 'Not a Valid Password'Excel ADODB VBA 错误消息“不是有效密码”
【发布时间】:2012-08-15 18:33:42
【问题描述】:

我正在尝试通过 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 的密码。密码绝对正确,但我总是收到错误“不是有效密码”。 有人可以指导我吗? -斯里兰卡。

附加信息: 我正在使用 office 2010 并将此数据库保存为 mdb(2003) 文件(我也尝试使用 accdb extn 保存此文件)。 当我尝试为数据库设置密码时,它显示消息“使用分组密码进行加密与行级锁定不兼容。行级锁定将被忽略。” 和VBA中的错误信息有关系吗?

【问题讨论】:

  • 您确定需要数据库密码而不是用户密码吗?

标签: vba ms-access-2010


【解决方案1】:

在 Access 2010 中,数据库密码的加密方法已更改,并且 ADO 提供程序的“Jet OLEDB:Database Password”关键字似乎不适用于新方法。在这里,我不得不删除密码,进入 Access->File->Options->Client Settings->Advanced 并选中“use legacy encryption”,然后重新创建密码。

不知道ACE提供者是否有新的OLE DB连接字符串关键字,或者使用ADO.NET时是否也会出现这个问题

【讨论】:

【解决方案2】:

或者你可以这样做。

    conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath & ";Jet OLEDB:Database Password=" & pwd

【讨论】:

  • 感谢您的快速回复。不知何故,这段代码在我的系统和另一个备用系统中不起作用。 msgbox conn.ConnectionString 给我“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Test.mdb;Jet OLEDB:Database Password=hello123;”,但它仍然抛出 Invalid Password 错误。我正在使用 office 2010 并将此数据库保存为 mdb(2003) 文件。
  • 我错了,但是字符串应该是这样的,“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Test.mdb;Jet OLEDB:Database Password=hello123 " .
  • 这取决于您使用的 OLEDB 版本以及您的数据库扩展名。
【解决方案3】:

请按以下方式使用

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;Extended Properties ='Excel 12.0;HDR=Yes;';Jet OLEDB:系统数据库=C:\Users\csub1\AppData\Roaming\Microsoft\Access\System.mdw"

请在 System Database 下找到 System.mdw 文件。提供密码时请使用 Jet OLEDB:Database Password。

经过大量研究,它奏效了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多