Quando riempire tutti i campi ottengo errori 3021: nessun record corrente
-
21-12-2019 - |
Domanda
Ho una tabella che deve essere riempita con qualche record attraverso un modulo.Sto usando questo codice:
Set rp = CurrentDb.OpenRecordset("table1")
Do
rp.Edit
rp!field2 = Text22
rp.Update
rp.MoveNext
Loop
.
Quando il codice riempie la tabella e arriva alla fine del file, ottengo l'errore 3021.
Perché sta succedendo?
Soluzione
Prova questo:
Set rp = CurrentDb.OpenRecordset("table1")
Do Until rp.EOF
rp.Edit
rp!Field2 = Text22
rp.Update
rp.MoveNext
Loop
.
Un altro modo sarebbe usare qualcosa del genere:
CurrentDb.Execute "UPDATE table1 SET field2='" & Text22 & "'", dbFailOnError
. Altri suggerimenti
Sarebbe molto, molto più veloce utilizzare SQL se si desidera aggiornare ogni riga in una tabella a un valore specifico.
Ad esempio:
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."
.
È anche possibile specificare il tipo di parametro, ad esempio:
sSQL= "PARAMETERS param Text(150); UPDATE Table1 SET Field2=param"
.
È molto più sicuro utilizzare i parametri che per creare stringhe SQL.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow