Un típico bucle de recorrido de un rs es lo que sigue:
'vemos si el rs está vacío
   If rs.EOF Then
   Else
'vamos al principio del rs
      rs.MoveFirst
   
      Do Until rsProducto.EOF
         ...
         rsProducto.MoveNext
      Loop
   End If
   Puede utilizar los métodos MoveFirst, MoveLast, MovePrevious y MoveNext (pueden dar EOF, no puede seguirse avanzando o BOF no se puede seguir retrocediendo)
                      Espero que te sirva