Cuando llene todos los campos, obtengo el error 3021: no hay registro actual
-
21-12-2019 - |
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?
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