[AccessD] rs.RecordCount

Arthur Fuller fuller.artful at gmail.com
Sun Mar 24 12:15:20 CDT 2013


In my Sunday morning "Nothing is True, Question Everything" mood, I was
playing around with recordsets and wrote this little test of RecordCount.
Because I've always assumed it would be bad, coded something like this:

<vba>
With rs
     If .bof or .eof then
         Msgbox
     end if
     .MoveLast
     .MoveFirst
     debug.print .RecordCount   ' or do something with it
End With
</vba>

So instead I tried this:

<vba>
    Dim intCount As Integer
    Dim rs As DAO.Recordset
    Set rs = Me.RecordsetClone

    With rs
        'This suggests that the common movelast command is unnecessary.
        'The record count is the same before and after
        Debug.Print "Count Before Move: " & .RecordCount
        .MoveFirst
        .MoveLast
        Debug.Print "Count After Move: " & .RecordCount
        intCount = .RecordCount
    End With
    Me.txtCount = intCount
    rs.Close
    Set rs = Nothing
</vba>

It appears that the recordset knows how large it is even without the
MoveLast command. Is the wisdom a myth? Or maybe that an old bug finally
got fixed? I'm using 2007, does that make a difference? Maybe it has
something to do with the size of the recordset, as in the case of a form
bound to a table with a million rows.

Any thoughts?
-- 
Arthur


More information about the AccessD mailing list