使用Access 2007,我想使用一个返回记录集的输入参数调用存储过程.
使用ADODB,除连接字符串外,这非常简单.我希望能够从特定的表派生服务器和数据库名称,该表始终指向正确的服务器和数据库. (我不时通过重新链接100个左右的链表来重新连接到开发dbs进行测试.)
有没有办法从tabledef获取服务器和数据库名称而不解析整个事情?有房产吗?我还没找到一个….
最终查询非常简单:EXEC sp_DeleteProjects N’12,24,54’删除项目12,24和54,并返回记录集(单行),其中包含各种子表条目的已删除记录计数.
解决方法
如果已有一个指向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