[AccessD] rs.RecordCount

Stuart McLachlan stuart at lexacorp.com.pg
Sun Mar 24 12:47:12 CDT 2013


> Maybe it has something to do with the size of the recordset,

That's the way I've always understood it.

And a quick check reveals that it's still what MS says as at A2007:

http://msdn.microsoft.com/en-us/library/office/bb208624%28v=office.12%29.aspx

"Use the RecordCount property to find out how many records in a Recordset or TableDef 
object have been accessed. The RecordCount property doesn't indicate how many records 
are contained in a dynaset-, snapshot-, or forward-only-type Recordset object until all 
records have been accessed. Once the last record has been accessed, the RecordCount 
property indicates the total number of undeleted records in the Recordset or TableDef object. 
To force the last record to be accessed, use the MoveLast method on the Recordset object"

-- 
Stuart

On 24 Mar 2013 at 13:15, Arthur Fuller wrote:

> 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
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> 




More information about the AccessD mailing list