ADO记录集没有记录计数,源设置为ADO命令(存储过程)

时间:2016-08-08 12:22:40

标签: sql-server vba stored-procedures

我在VBA中有一个ADO命令对象,它运行并从存储过程返回值(在SQL Server中)。为了验证VBA中的SP和命令行,我使用了CopyFromRecordset方法来查看数据,一切似乎都很好。

Set ADOComm = New ADODB.Command
With ADOComm
    .ActiveConnection = ADOConn
    .CommandType = adCmdStoredProc
    .CommandText = "GenerateMasterSumIfs"
    .Parameters.Append .CreateParameter("ImportFilePath", adVarChar, adParamInput, 100, TextFileSavePath)
End With

Set ADORec = New ADODB.Recordset
Set ADORec = ADOComm.Execute

我现在希望能够使用FIND或GETROWS(例如)导航返回的记录,但记录集似乎没有数据(recordset.RecordCount返回-1)。我试图在网上研究这个,并且已经看到根据源(在我的情况下,SQL Server)限制了对游标类型的引用,但是找不到我能理解和使用的解决方案。

所以,我的问题具体是:

  
      
  1. 我可以继续使用ADO Command / Recordset组合来整理我的数据然后“导航”吗? OR
  2.   
  3. 我是否需要使用其他方法运行SP以启用我需要的导航?
  4.   

我不是这个领域的专家,所以非常感谢您对我的技术描述和任何网站礼仪失礼的耐心。

1 个答案:

答案 0 :(得分:1)

我需要的解决方案是ADO Connection对象的CursorLocation属性。将其更改为adUseClient允许我移动光标并根据需要使用FIND和GETROWS等方法。

Set ADOConn = New ADODB.Connection
ADOConn.CursorLocation = adUseClient   
ADOConn.Open "Driver={SQL Server Native Client 11.0};Server=ServerName;Database=DBName;Trusted_Connection=yes;"

Set ADOComm = New ADODB.Command
With ADOComm
    .ActiveConnection = ADOConn
    .CommandType = adCmdStoredProc
    .CommandText = "GenerateMasterSumIfs"
    .Parameters.Append .CreateParameter("ImportFilePath", adVarChar, adParamInput, 100, TextFileSavePath)
    .Parameters.Append .CreateParameter("MTFilePath", adVarChar, adParamInput, 100, PathToMT)
End With

Set ADORec = New ADODB.Recordset
Set ADORec = ADOComm.Execute