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



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(例如(导航返回的记录,但记录集似乎没有数据(记录集.RecordCount返回-1(。我曾尝试在网上对此进行研究,并看到对游标类型的引用受到了源代码的限制(在我的情况下是SQL Server(,但一直未能找到一个我可以理解和使用的解决方案。

因此,我的问题,特别是:

  1. 我可以继续使用ADO命令/记录集组合来整理我的数据,然后"导航"它吗?或
  2. 是否需要使用其他方法运行SP以启用所需的导航

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

我需要的解决方案是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

最新更新