我今天的问题很简单.我所拥有的是一个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)
Run Code Online (Sandbox Code Playgroud)
然后结果位于对象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
Run Code Online (Sandbox Code Playgroud)
现在我要做的是这个记录集对象中包含的记录数.现在我对课程进行了一些研究,发现有一个RecordCount att.
所以我想做的很简单:
if( rs.RecordCount > 0) then
serCheck1 = rs(0)
MsgBox serCheck1
end if
Run Code Online (Sandbox Code Playgroud)
问题是我的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
Run Code Online (Sandbox Code Playgroud)
小智 5
来自帮助
Set oRs = New ADODB.Recordset
oRs.CursorLocation = adUseClient
oRs.Open sSQL, sConn, adOpenStatic, adLockBatchOptimistic, adCmdText
Run Code Online (Sandbox Code Playgroud)
帮助在" 什么是光标"(ADODB程序员指南 - Windows软件开发工具包)中有完整的光标描述.
您将在本地或在服务器上刻录资源以获取记录计数.无论如何,如果您正在浏览数据,请计算它们.
这是一次一个记录集的方法.
Do While not .EOF
Outp.writeline .Fields("Txt").Value
.MoveNext
Loop
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27266 次 |
| 最近记录: |