Premetto che non utilizzo i dataset. Ma per paginare i recordset potresti appoggiarti alla proprietà AbsolutePosition come nell'esempio :
codice:
Dim rs as adodb.RecordSet
Dim cn as adodb.Connection 
....
    ' Apertura connessione
    Set cn = New adodb.Connection
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=TuoDB.mdb;Persist Security Info=False"

....
    ' Estrazione con tua query 
    Dim rs as ADODB.RecordSet    
    Set rs = New adodb.Recordset
    rs.Open "Select * from TuaTabellaGrandissima", cn, adOpenStatic, adLockOptimistic

 ' Dichiari una variabile che ti faccia da cursore
 Public RecCursor as Long 
 ' Con rs.RecordCount ti ricavi quanti record hai nel RecordSet
 
Private Sub BottoneAvanti_Click()
    Dim i as Long 
    ' Quanti record vuoi per volta, poniamo 30
    ' Potresti parametrizzare anche questo numero 
    RecCursor = RecCursor + 30
    if RecCursor > rs.RecordCount - 1 Then RecCursor = rs.RecordCount - 1 ' arrivi all'ultimo    
End Sub 


Private Sub BottoneIndietro_Click()
    ' Quanti record vuoi per volta, poniamo 30
    ' Potresti parametrizzare anche questo numero 
    RecCursor = RecCursor - 30
    if RecCursor < 0 Then RecCursor = 0 ' Cominci dal primo      
End Sub 

Public Sub ElaboraRecords()
    Dim i as Long 
    For i = RecCursor - 30 To RecCursor - 1  
        rs.AbsolutePosition = i
        ' In questo punto hai il record in posizione i
        ' Facci quello che vuoi, per esempio aggiungilo ad una 
        ' griglia ecc..   
    Next i
End Sub
Non ho avuto tempo di testare il codice ma il meccanismo è questo.

Ciao,