Quand je remplisse tous les champs, je reçois une erreur 3021: Aucun enregistrement actuel

StackOverflow https://stackoverflow.com//questions/22022447

  •  21-12-2019
  •  | 
  •  

Question

J'ai une table qui doit être remplie d'un enregistrement à travers un formulaire.J'utilise ce code:

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

Lorsque le code remplit la table et atteint la fin du fichier, j'obtiens l'erreur 3021.

Pourquoi cela se produit-il?

Était-ce utile?

La solution

Essayez celui-ci:

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

Une autre façon serait d'utiliser quelque chose comme ceci:

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

Autres conseils

Ce serait beaucoup, beaucoup plus rapide d'utiliser SQL si vous souhaitez mettre à jour chaque ligne d'une table à une valeur spécifique.

Par exemple:

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."

Vous pouvez même spécifier le type de paramètre, par exemple:

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

Il est beaucoup plus sûr d'utiliser des paramètres qui construisent des chaînes SQL.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top