我正在尝试使用Excel 2007中的VBA在Access 2007 DB中执行查询作为存储过程。该查询从通过ODBC DSN链接的几个MS SQL表中检索数据。外部表的身份验证使用Windows NT authentication with Trusted_Connection=Yes
我尝试使用用户和系统DSN连接到链接表 - 从Access 2007运行查询时,这两种方式都可以正常工作。
当我尝试在Excel中使用VBA时,不会检索应该来自Windows身份验证表的数据。我能够从一组使用存储的UID的链接MS SQL表中检索数据。
这是我正在使用的连接字符串:
strDB = xlWb.Path & "\database\dbQueries.accdb"
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & strDB & ";"
以下是仅部分成功的命令(使用来自UID身份验证表的数据):
With cmd2
.ActiveConnection = conn
.CommandText = "qryAppendtblOutput"
.CommandType = adCmdStoredProc
.Parameters.Append cmd2.CreateParameter("[Start Date]", adDBDate, adParamInput, , startDate)
End With
cmd2.Execute
非常感谢!
答案 0 :(得分:0)
我已经能够通过切换到Access ODBC驱动程序而不是OLE DB提供程序来解决此问题。我将连接字符串更改为:
strDB = xlWb.Path & "\database\dbQueries.accdb"
conn.Open "Driver={Microsoft Access Driver (*.mdb, *.accdb)};" & _
"Dbq=" & strDB & ";" & _
"Trusted_Connection=Yes;"
然后,我所要做的就是在Access中调整底层查询的语法以满足此驱动程序的要求(我必须用单个替换所有双引号)。
非常感谢所有审核我问题的人:)!