ms访问ADO - 无法检索从存储过程返回的记录集
问题描述:
我正在使用旧的MS-Access(2007)应用程序(维护+更改)。当前的变化涉及将一段代码从select * from
更改为调用返回简单表的存储过程(仅一个varchar列)。ms访问ADO - 无法检索从存储过程返回的记录集
下面是代码的MS-Access中的一部分:
:
Set Conn1 = CurrentProject.Connection
Set Cmd1 = New ADODB.Command
Cmd1.ActiveConnection = Conn1
Cmd1.CommandText = "p_Labels_Print"
Cmd1.CommandType = adCmdStoredProc
Cmd1.Parameters.Append Cmd1.CreateParameter("@_p_Button_type", adInteger, adParamInput)
Cmd1.Parameters.Append Cmd1.CreateParameter("@_p_Sampling_Request", adInteger, adParamInput)
Cmd1.Parameters.Append Cmd1.CreateParameter("@_p_Place", adVarChar, adParamInput, 16)
Cmd1.Parameters.Append Cmd1.CreateParameter("@_p_Sampler_Code", adVarChar, adParamInput, 16)
Cmd1.Parameters.Append Cmd1.CreateParameter("@_p_Total_Copies", adInteger, adParamInput)
Cmd1.Parameters.Append Cmd1.CreateParameter("@_p_Print_Option", adInteger, adParamInput)
Cmd1.Parameters.Append Cmd1.CreateParameter("@_p_Print_Option", adVarChar, adParamInput, 16)
Cmd1.Parameters(0).Value = 2
Cmd1.Parameters(1).Value = 2878954
Cmd1.Parameters(2).Value = "0C9991"
Cmd1.Parameters(3).Value = 89029
Cmd1.Parameters(4).Value = 10
Cmd1.Parameters(5).Value = 1
Cmd1.Parameters(6).Value = "S-SAPTEST"
Set Rs1 = Cmd1.Execute()
' Process results from recordset, then close it.
:
Rs1.Close
:
现在,我知道过程是用正确的参数调用(和值,因为我是从过程中登录到调试表,我看到所有的参数都收到并返回的表格只包含10条记录(如参数“4”规定)
返回的表看起来像:
+------------------------------------------------------+
| One_Sticker |
+------------------------------------------------------+
|[email protected][email protected]@[email protected]@[email protected]@[email protected] |
|[email protected][email protected]@[email protected]@[email protected]@[email protected] |
|[email protected][email protected]@[email protected]@[email protected]@[email protected] |
|[email protected][email protected]@[email protected]@[email protected]@[email protected] |
|[email protected][email protected]@[email protected]@[email protected]@[email protected] |
|[email protected][email protected]@[email protected]@[email protected]@[email protected] |
|[email protected][email protected]@[email protected]@[email protected]@[email protected]PTEST |
|[email protected][email protected]@[email protected]@[email protected]@[email protected] |
|[email protected][email protected]@[email protected]@[email protected]@[email protected] |
|[email protected][email protected]@[email protected]@[email protected]@[email protected] |
+------------------------------------------------------+
在MS-Access中,我在语句Rs1.Close
和Rs1
上设置了一个断点。然后,当挖掘Rs1
内的结果时,没有任何内容(意味着在Rs1的观察窗口内为Fields > Count 0
)。
我是否错过了某些东西(例如,以某种方式定义除Rs1
之外的变量)以接收结果?
非常感谢您的建议。
答
我发现了这个问题。声明:
SET NOCOUNT ON ;
在被调用存储过程的开始处丢失。一旦添加,一切都开始按预期工作。