RecordSet.RecordCount返回-1

时间:2015-06-05 14:54:35

标签: vbscript adodb intersystems-cache

我知道有很多问题,大多数人都说设置光标位置可以修复它(resultSet.CursorLocation = adUseClient)。这仍然返回-1。

然后我发现了一条帖子,说要尝试RecordSet.MoveLast,然后在循环之前再次获取RecordCount,然后再获取MoveFirst。这仍然导致-1。我还注意到我的连接与我在这个问题上发现的大多数连接有点不同。这是:

sDSN = "DSN=" & sDSN & ";UID=" & sUsername & ";PWD=" & sPassword & ";"
Set sConnect = CreateObject("ADODB.Connection")
sConnect.Open sDSN

sSQL = <big statement>

Set resultSet = sConnect.Execute(sSQL)
resultSet.CursorLocation = adUseClient
resultSet.MoveLast
WScript.Echo resultSet.RecordCount & " records found." 'Outputs -1
resultSet.MoveFirst
Do While Not resultSet.eof
   'do lots of stuff here
Loop

1 个答案:

答案 0 :(得分:2)

尝试使用Recordset.Open()并提供记录集参数,而不是创建一个快速但有限的“firehose”光标(从Connection.Execute()返回的类型)。

Const adOpenStatic = 3
Const adLockReadOnly = 1

Set resultSet = CreateObject("ADODB.Recordset")
resultSet.Open sSQL, sConnect, adOpenStatic, adLockReadOnly

WScript.Echo resultSet.RecordCount