Error en la instrucción: To Me. Recordset.RecordCount

Estoy utilizando este proceso para dar unos valores a toda una tabla

Dim i As Integer
DoCmd.GoToRecord , , acFirst

For i = 1 To Me.Recordset.RecordCount

... Instruccciones de actualizacion

DoCmd. GoToRecord,, acNext
Next

Y me da este error al final de los registros:

Siempre ocurre cuando encuentra el final de los registros, ya que realiza perfectamente todos los cálculos en cada uno de los registros de la tabla.

Necesitaría poder evitar este error que me da.

1

1 respuesta

Respuesta
2

Para dar valores a toda una tabla, ese proceso, en mi opinión, es un "animalada". Usando una SQL de actualización (CurrentDB. Execute "Update Tabla..." ) escribes menos líneas de código, el proceso es más rápido, y no tienes que lidiar con ese inconveniente...

Dicho esto, si lo quieres hacer así, te explico en primer lugar el motivo del error: el llegar al último registro en el bucle se ejecuta la línea de ir al siguiente registro (DoCmd. GoToRecord,, acNext), pero no hay un registro siguiente (ya estás en el último)...

Lo puedes solucionar de varias formas:

Poniendo:

For i = 1 To Me.Recordset.RecordCount-1

o poniendo:

If Not rst.EOF Then DoCmd. GoToRecord,, acNext

Un saludo.


     bit.ly/ForoNkSv 

El motivo de no hacer una consulta de actualización es que dentro del ciclo hay diferenres procesos en función de parámetros y serian muchísimas actualizacionesque tendría que realizar.

Si utilizo: For i = 1 To Me.Recordset.RecordCount-1, me ocurre que el ultimo registro no me queda actualizado

Y esta otra instruccion que me has indicado: If Not rst.EOF Then DoCmd. GoToRecord,, acNext donde tendria que colocarla? ya que la he cambiado por: DoCmd.GoToRecord , , acNext

Y me da este error:

Fallo mío, por costumbre usé rst. Eof, y debería haber puesto me. Recordset. Eof

El número de procesos es indiferente, si es en la misma tabla, con una única consulta de actualización lo puedes hacer.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas