使用 RowCount 属性找出在 rdoResultset 对象中有多少行被访问,或判断返回的 rdoResultset 一行也没有。在所有的行都被访问完之前,RowCount 不指示 rdoResultset 查询将返回多少行。在所有的行都被访问完之后,RowCount 属性才反映 rdoResultset 中的总行数。引用 RowCount 属性造成 RDO 全部移居结果集-就好象执行了一个 MoveLast 方法。根据驱动程序和数据资源,RowCount 属性既可以返回 -1,指示行的个数是不可用的,又可以是0,指示 rdoResultset 没有返回行。如果驱动程序能够返回行计数,RowCount 属性就返回 rdoResultset 中的行的数目。也就说要将所有记录访问一遍才能得到真正的记录数 Option Explicit Dim ps As rdoPreparedStatement Dim rs As rdoResultset Dim cn As rdoConnectionPrivate Sub Form_Load() Dim SQL As String Set cn = MSRDC1.ConnectionSQL = "{call ChooseAuthor (?)}" Set ps = cn.CreatePreparedStatement("GetAuthor", SQL) End Sub Private Sub Search_Click() ps(0) = NameWanted.Text Set MSRDC1.Resultset = ps.OpenResultset( _ rdOpenKeyset, rdConcurReadOnly) With MSRDC1.Resultset If .RowCount = 0 Then MsgBox "No titles by that author were found." NameWanted.SetFocus Else Do Until .EOF .MoveNext TitlesFound = .RowCount '到目前为止有多少行 Loop TitlesFound = .RowCount '所找到的所有行 End If .MoveFirst End With End Sub
Option Explicit
Dim ps As rdoPreparedStatement
Dim rs As rdoResultset
Dim cn As rdoConnectionPrivate Sub Form_Load()
Dim SQL As String
Set cn = MSRDC1.ConnectionSQL = "{call ChooseAuthor (?)}"
Set ps = cn.CreatePreparedStatement("GetAuthor", SQL)
End Sub
Private Sub Search_Click()
ps(0) = NameWanted.Text
Set MSRDC1.Resultset = ps.OpenResultset( _
rdOpenKeyset, rdConcurReadOnly)
With MSRDC1.Resultset
If .RowCount = 0 Then
MsgBox "No titles by that author were found."
NameWanted.SetFocus
Else
Do Until .EOF
.MoveNext
TitlesFound = .RowCount '到目前为止有多少行
Loop
TitlesFound = .RowCount '所找到的所有行
End If
.MoveFirst
End With
End Sub