通过ADO调用存储过程的访问查询无法从链接表中检索

时间:2014-04-11 20:23:16

标签: sql sql-server excel vba ms-access-2007

我正在尝试使用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

非常感谢!

1 个答案:

答案 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中调整底层查询的语法以满足此驱动程序的要求(我必须用单个替换所有双引号)。

非常感谢所有审核我问题的人:)!