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?

È stato utile?

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
scroll top