You won't get dynamic cursor on Jet tables, it will be coerced to static or keyset, depending on specified locktype. Test it by using debug.print adOpenDynamic, .CursorType after accessing the opened recordset.
I still believe the method of "accessing" the whole recordset, as boblarson confirmed, is a DAO method that won't work on ADO. Either the .RecordCount is populated from the start, or it isn't. According to the help files "The property returns -1 when ADO cannot determine the number of records or if the provider or cursor type does not support RecordCount. ... The cursor type of the Recordset object affects whether the number of records can be determined. The Recordcount property will return -1 for a forward-cursor; the actual count for a static or keyset cursor; and either -1 or the actual count for a dynamic cursor, depending on the data source."
Do you have any sources/samples?
And then, even under circumstances where it should give an accurate count, it will sometimes still give -1, which is why I recommend a SELECT Count(*)... if the count is essential.