【发布时间】:2023-03-03 18:12:01
【问题描述】:
我有一个内置在 Excel 中的 VBA 查询,它针对 Access 数据库运行 SQL 查询。当数据库不受保护且没有使用以下代码的密码时,连接有效:
Set Connection = New ADODB.Connection
Cnct = "Provider=Microsoft.ACE.OLEDB.12.0;"
Cnct = Cnct & "Data Source=" & DBFullName & ";"
Connection.Open ConnectionString:=Cnct
但是当我用密码保护数据库并尝试上面相同但添加密码条件时,它不会连接并且我收到“运行时错误 -2147217843”消息。我为此使用的代码如下:
Set Connection = New ADODB.Connection
Cnct = "Provider=Microsoft.ACE.OLEDB.12.0;"
Cnct = Cnct & "Data Source=" & DBFullName & ";"
Cnct = Cnct & "user ID=" & Environ("Username") & ";"
Cnct = Cnct & "password=XXXXXXXXXX;"
Connection.Open ConnectionString:=Cnct
有人知道我在这里做错了什么吗?
【问题讨论】:
-
有人可能会立即发现这一点,但运行时 Environ("Username") 中的内容是什么?然后您可以使用 Environ("Username") 中的值和密码手动登录数据库吗?
-
当我打开数据库时,它只要求输入密码。我还需要用户名吗?我从互联网上获得了 Environ("Username"),据说它会获取 Windows 登录用户名。
-
connectionstrings.com/access - 请参阅 Microsoft ACE OLEDB 12.0 RE 加密与 Access 2010 下的 cmets
-
谢谢 Alex,你知道如何将加密设置设置为 2007 加密吗?
-
数据库正在寻找数据库用户 ID 和密码,而不是 Windows 用户 ID(由 Environ("Username") 返回)。如果它只要求输入密码,则 UserID 可能是
admin
标签: excel ms-access vba excel-2010