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

时间:2017-06-20 13:12:20

标签: sql-server ms-access stored-procedures

我正在开发一个旧的MS-Access(2007)应用程序(维护+更改)。当前更改涉及将一段代码从select * from更改为调用返回简单表(仅一个varchar列)的存储过程。

以下是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                                          |
 +------------------------------------------------------+
 |WQSticker03@!@2878954@!@KRG000@!@BlaBla-1@!@S-SAPTEST |
 |WQSticker03@!@2878954@!@KRG000@!@BlaBla-1@!@S-SAPTEST |
 |WQSticker03@!@2878954@!@KRG000@!@BlaBla-1@!@S-SAPTEST |
 |WQSticker03@!@2878954@!@KRG000@!@BlaBla-1@!@S-SAPTEST |
 |WQSticker03@!@2878954@!@KRG000@!@BlaBla-1@!@S-SAPTEST |
 |WQSticker03@!@2878954@!@KRG000@!@BlaBla-1@!@S-SAPTEST |
 |WQSticker03@!@2878954@!@KRG000@!@BlaBla-1@!@S-SAPTEST |
 |WQSticker03@!@2878954@!@KRG000@!@BlaBla-1@!@S-SAPTEST |
 |WQSticker03@!@2878954@!@KRG000@!@BlaBla-1@!@S-SAPTEST |
 |WQSticker03@!@2878954@!@KRG000@!@BlaBla-1@!@S-SAPTEST |
 +------------------------------------------------------+

在MS-Access中,我在语句Rs1.Close处设置了一个断点,并在Rs1上设置了一个监听点。然后,当在Rs1内挖掘结果时,没有任何内容(在观察窗口中为Rs1意味着Fields > Count 0)。

我是否遗漏了某些内容(比如以某种方式定义Rs1以外的变量)来接收结果?

非常感谢你的建议。

1 个答案:

答案 0 :(得分:0)

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

SET NOCOUNT ON ;
在调用的存储过程的开头缺少

。一旦添加,一切都开始按预期工作。

相关问题