Insertion d'enregistrements dans Access

Signaler
Messages postés
22
Date d'inscription
jeudi 18 juin 2009
Statut
Membre
Dernière intervention
10 mai 2010
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
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

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
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
Messages postés
22
Date d'inscription
jeudi 18 juin 2009
Statut
Membre
Dernière intervention
10 mai 2010
1
Oui, mais comment faire concrètement ?
J'ai oublié de dire que j'étais débutant...

Merci.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
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