我在Excel 2000中编写了以下VBA代码,以便在WindowsXP中创建与具有工作组安全性的Access 2000的连接。一切正常,直到我们转移到Windows7数据库仍在Access2000中。
在打开与数据库的连接后,似乎从ADODB连接字符串中删除了密码值。下面代码的第一个debug.print语句返回包含密码和用户名的字符串,但第二个debug.print语句仅显示User ID参数的值。因此,当我尝试创建记录集时,我收到一条错误消息,表示我没有数据权限。
按照与Windows XP中的Excel 2000完全相同的步骤,ADODB连接字符串没有消除密码值,我能够打开记录集。
有什么建议吗?
Public Function sDbConnection() As String
Dim sString As String
Dim sConnection As String
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.Provider = "Microsoft.Jet.OLEDB.4.0;"
' Provide path to the system Db
conn.Properties("Jet OLEDB:System database") = "S:\UTL\RscMgmt\SECURE.MDW"
' Username and password to the secured access database
conn.Properties("Password") = "MyPassword"
conn.Properties("User Id") = "MyUserID"
Debug.Print conn.ConnectionString
' Open a connection to the Access 2000 db and return the connection string
conn.Open "Data Source=" & "S:\UTL\RscMgmt\GasPortfolio 2000.mdb" & ";"
sConnection = conn.ConnectionString
Debug.Print sConnection
sDbConnection = sConnection
End Function
答案 0 :(得分:0)
如果您使用的是Win 7的64位版本,则Microsoft.Jet.OLEDB.4.0
提供程序将无法运行,因为它仅适用于32位系统。
This website列出了一些可以实施的解决方法。
答案 1 :(得分:0)
尝试使用“ Microsoft.ACE.OLEDB.12.0 ”提供程序。