配置Access报告以使用SQL Server存储过程作为其记录源

时间:2013-11-28 09:30:58

标签: sql-server vba ms-access stored-procedures ms-access-2010

我正在尝试使用MS SQL Server存储过程的结果在MS Access 2010中创建报告。在我的VBA代码中,我尝试:

Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.CreateQueryDef("")
qdf.Connect = CurrentDb.TableDefs("[MyTable]").Connect
qdf.SQL = "exec spMyProc @ID = " & "1"
qdf.ReturnsRecords = True

Set rs = qdf.OpenRecordset(dbOpenSnapshot)

Set Me.Recordset = rs

但它引发了一个错误:

运行时错误'32585'
此功能仅在ADP中可用。

我做错了什么或如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

在Access中创建一个保存的传递查询,用于执行存储过程。在这个例子中,我将调用命名查询[myPassThroughQuery]。

修改报告,使myPassThroughQuery成为报告的Record Source

现在,您可以在打开报告之前调整SP呼叫:

Dim cdb As DAO.Database, qdf As DAO.QueryDef
Set cdb = CurrentDb
Set qdf = cdb.QueryDefs("myPassThroughQuery")
qdf.SQL = "EXEC spMyProc @ID = " & "1"
Set qdf = Nothing
Set cdb = Nothing
DoCmd.OpenReport "mySpReport", acViewPreview