Insertion d'enregistrements dans Access

fazpedro Messages postés 22 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 10 mai 2010 - 9 déc. 2009 à 11:45
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 9 déc. 2009 à 16:20
Bonjour,
je souhaite insérer dans une table Access existante le résultat de la saisie de cette table issue d'une mire IBM3270

Voici mon code :
------------------------------
Function MajbesoinMHF()
'Dim tbl As Recordset
Set tbl = CurrentDb.OpenRecordset("BASE MHF BESOINS")
' Initialisation de la fenêtre d'émulation session A
Set Ps = CreateObject("PCOMM.autECLPS")
Set sess = CreateObject("PCOMM.autECLOIA")
Ps.SetConnectionByName "A"
sess.SetConnectionByName "A"

DoCmd.SetWarnings False

Do While Not tbl.EOF
sess.WaitForAppAvailable
sess.WaitForInputReady
Ps.SetCursorPos 9, 12
sess.WaitForInputReady
Ps.SendKeys "[eraseeof]"
sess.WaitForInputReady
Ps.SendKeys tbl.Fields(0).Value
Ps.SetCursorPos 9, 29
sess.WaitForInputReady
Ps.SendKeys "[eraseeof]"
sess.WaitForInputReady
Ps.SendKeys tbl.Fields(1).Value
Ps.SetCursorPos 9, 57
sess.WaitForInputReady
Ps.SendKeys "[eraseeof]"
sess.WaitForInputReady
Ps.SendKeys tbl.Fields(2).Value
Ps.SetCursorPos 11, 16
sess.WaitForInputReady
Ps.SendKeys "[eraseeof]"
sess.WaitForInputReady
Ps.SendKeys tbl.Fields(3).Value
sess.WaitForInputReady
Ps.SendKeys "[enter]"

tbl.Fields(5).Value = Ps.GetText(20, 34, 15)

tbl.MoveNext
Loop

tbl.Close
MsgBox ("Terminé !...")

Set Scr = Nothing
Set sess = Nothing
DoCmd.SetWarnings True
End Function
------------------------------

le problème se situe sur la ligne suivante :
tbl.Fields(5).Value = Ps.GetText(20, 34, 15)

Voici le message d'erreur que j'obtiens :
Erreur d'exécution '3020'
Update or CancelUpdate without AddNew or Edit


merci de vos réponses.

3 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 déc. 2009 à 13:53
le message est pourtant limpide, non ?

tu fais une modification de la valeur de ton champ.
Tu n'y est pas autorisé sans faire d'abord appel a la méthode AddNew ou a la méthode Edit de ton Recordset afin que cette nouvelle valeur soir soit placée :

dans un nouvel enregistrement (AddNew)
soit en remplacement de la valeur actuelle (Edit)


cette modification doit être confirmée par un appel a la méthode Update de ton objet recordset

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
fazpedro Messages postés 22 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 10 mai 2010 1
9 déc. 2009 à 16:16
Oui, mais comment faire concrètement ?
J'ai oublié de dire que j'étais débutant...

Merci.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 déc. 2009 à 16:20
ben

tbl.AddNew
tbl.Fields = .......
tbl.Update

ou bien

tbl.Edit
tbl.Fields = .......
tbl.Update

comme je viens de te dire...
Appeller AddNew ou Edit selon ce que l'on veut faire et enregistrer la modification avec Edit ^^

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
Rejoignez-nous