ms访问ADO - 无法检索从存储过程返回的记录集

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.CloseRs1上设置了一个断点。然后,当挖掘Rs1内的结果时,没有任何内容(意味着在Rs1的观察窗口内为Fields > Count 0)。

我是否错过了某些东西(例如,以某种方式定义除Rs1之外的变量)以接收结果?

非常感谢您的建议。

我发现了这个问题。声明:

SET NOCOUNT ON ; 

在被调用存储过程的开始处丢失。一旦添加,一切都开始按预期工作。