Io quando ho tanti dati in un db access dopo la query faccio rs.MoveLast e poi lo riporto su con rs.MoveFirst, così forzo il caricamento di tutti i dati in memoria.

Prova a vrdere se trai un miglioramento nel tuo caso