【发布时间】:2019-02-12 02:08:49
【问题描述】:
我今天的问题是一个相当简单的问题。我所拥有的是一个 VB 模块,其中包含用于向我返回 ADODB.RecordSet 对象的代码,该对象具有从已执行的 SQL 查询中获取的记录。它的工作原理是这样的:
sSql_SerCheck = "SELECT DISTINCT Serial FROM dbo.WipReservedSerial WHERE Serial LIKE '" & serialTempSearch
sSql_SerCheck = sSql_SerCheck & "' ORDER BY Serial DESC "
dbGetRecordSet(sSql_SerCheck)
然后结果位于对象 rs 中,访问方式如下
temp = rs(0) 'For the value at the first column for the first record
rs.MoveNext 'This moves to the next record in the record set
现在我在这里要做的是这个记录集对象中包含的记录数。现在我对这个类做了一些研究,发现有一个 RecordCount att。
所以我想做的很简单:
if( rs.RecordCount > 0) then
serCheck1 = rs(0)
MsgBox serCheck1
end if
问题是我的 RecordCount 返回 -1。我发现这篇文章http://www.w3schools.com/asp/prop_rs_recordcount.asp 指出记录计数将返回 -1 用于以下各项:
注意:对于只进游标,此属性将返回 -1;静态或键集游标的实际计数;和 -1 或动态游标的实际计数。
注意:调用此属性时必须打开 Recordset 对象。如果不支持此属性,它将返回 -1。
如何让这个对象返回正确的记录数??
VB模块的代码添加如下:
Public cn, rs
'Specify pSQL as SQL Statement
Function dbGetRecordset(sSql)
dbCloseConnection()
Set cn = CreateObject("ADODB.Connection")
cn.CommandTimeout = 600
cn.Open(Conn & SystemVariables.CodeObject.CompanyDatabaseName)
Set rs = CreateObject("ADODB.Recordset")
rs.Open sSql, cn, 3, 3
End Function
【问题讨论】:
标签: vbscript