Pregunta

Tengo una tabla que debe llenarse con algún registro a través de un formulario.Estoy usando este código:

Set rp = CurrentDb.OpenRecordset("table1")
Do
    rp.Edit
    rp!field2 = Text22
    rp.Update
    rp.MoveNext
Loop

Cuando el código llena la tabla y llega al final del archivo, obtengo el error 3021.

¿Por qué está sucediendo esto?

¿Fue útil?

Solución

Pruebe este:

Set rp = CurrentDb.OpenRecordset("table1")
Do Until rp.EOF
    rp.Edit
    rp!Field2 = Text22
    rp.Update
    rp.MoveNext
Loop

Otra forma sería usar algo como esto:

CurrentDb.Execute "UPDATE table1 SET field2='" & Text22 & "'", dbFailOnError 

Otros consejos

Sería mucho, mucho más rápido usar SQL si desea actualizar cada fila en una tabla a un valor específico.

Por ejemplo:

sSQL= "UPDATE Table1 SET Field2=param"

Set qdf = db.CreateQueryDef("", sSQL)

qdf.Parameters!param = Trim(Me.Text22)
qdf.ReturnsRecords = False
qdf.Execute dbFailOnError

intResult = qdf.RecordsAffected

MsgBox "You updated " & intResult & " records."

Incluso puede especificar el tipo de parámetro, por ejemplo:

sSQL= "PARAMETERS param Text(150); UPDATE Table1 SET Field2=param"

Es mucho más seguro usar parámetros que para construir cuerdas SQL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top