使用Access 2007,我想用一个返回记录集的输入参数调用存储过程。
使用ADODB,除连接字符串外,这非常简单。我希望能够从特定的表派生服务器和数据库名称,该表始终指向正确的服务器和数据库。 (我不时通过重新链接100个左右的链表来重新连接到开发dbs进行测试。)
有没有办法从tabledef获取服务器和数据库名称而不解析整个事情?有房产吗?我还没找到一个......
最终查询非常简单:EXEC sp_DeleteProjects N'12,24,54'
删除项目12,24和54,并返回记录集(单行),其中包含各种子表条目的已删除记录计数。
答案 0 :(得分:6)
如果您已经有一个指向SQL Server数据库的Access链接表,那么您只需使用其.Connect
字符串和DAO.QueryDef
对象来执行存储过程,如以下VBA代码所示:
Sub CallSP()
Dim qdf As DAO.QueryDef, rst As DAO.Recordset
Set qdf = CurrentDb.CreateQueryDef("")
qdf.Connect = CurrentDb.TableDefs("dbo_MyTable").Connect
qdf.SQL = "EXEC dbo.MyStoredProcedure"
qdf.ReturnsRecords = True
Set rst = qdf.OpenRecordset(dbOpenSnapshot)
Debug.Print rst(0).Value
rst.Close
Set rst = Nothing
Set qdf = Nothing
End Sub