Ms-Access - 调用返回记录集的存储过程
我正在使用MS-Access 2007开发的一个旧的大规模系统,我负责维护(包括更改的实现)。Ms-Access - 调用返回记录集的存储过程
系统与SQL-Server(2012)进行交互。
目前,我需要实现一个更改,其中需要调用一个新的存储过程,它返回一个简单的记录集,每个记录都是一个字符串。
我试图用于调用应用程序中已存在的一些代码(使用ADO并复制到我正在处理的表单中),但没有任何我尝试过的方法。
这里是代码我试图使用方法:
glblsqlstrToLabels = "EXEC p_Labels_Print 1 , 2878954 , 'OC9991' , '89029' , 4 , 1 , 'dummy'"
虽然我使用完全相同的连接字符串,因为它正在使用的所有在应用程序中,有一个错误执行上述语句返回消息(类似...未打开...)。
我开始怀疑我调用函数的方式有错误(例如,没有为它定义任何参数,并期望类似于select
语句的行为)。
任何帮助将不胜感激。
编辑:
以下是的代码片段说明什么,我需要有工作:
Dim RS As Recordset
' Connection string is: Provider=Microsoft.Access.OLEDB.10.0;Persist Security Info=True;Data Source=****;User ID=****;Password=****;Initial Catalog=***;Data Provider=SQLOLEDB.1
MyCommand = "EXEC p_Labels_Print 1 , 2878954 , 'OC9991' , '89029' , 4 , 1 , 'asdasd'"
RS.Open MyCommand, CurrentProject.Connection
Do Until RS.EOF
Print <record retrieved>
Loop
RS.Close
Set RS = Nothing
我得到的错误是:Error: Operation is not allowed when the object is closed.
您需要正确的使用ADO和命令,你不能只是rs.Open
一个存储过程。
使用下面的Microsoft样板代码:
Set Cmd1 = New ADODB.Command
Cmd1.ActiveConnection = Conn1
Cmd1.CommandText = "sp_AdoTest"
Cmd1.CommandType = adCmdStoredProc
Cmd1.Parameters.Refresh
Cmd1.Parameters(1).Value = 10
Set Rs1 = Cmd1.Execute()
哪里Conn1
是你ADODB连接,并填写您的参数和存储过程的名称。
谢谢你,Erik。我建议,现在我没有得到错误。我如何从记录集中获取记录? – Idan
请编辑你的问题,并包括**完整**代码,调用过程,以及完整的+确切的错误信息。谢谢。 – Andre
您是否在SQL Management Studio中测试过该命令? – Kris
查看示例代码https://support.microsoft.com/zh-CN/help/185125/how-to-invoke-a-stored-procedure-with-ado-query-using-vba-c-java,实施它,并告诉我们你遇到的任何错误 –