Bonjour,
Voici le problème qui m'occupe : alors que j'ai développé une fonctionnalité d'historisation des consultations qui marche à merveille dans le cas de la consultation d'un enregistrement existant, je voudrais faire la même chose lors de la sauvegarde d'un nouvel enregistrement, et donc historiser l'enregistrement nouvellement créé.
Pour ce faire, je positionne dans l'événement Current de mon formulaire ma proc. d'historisation :
N.B. : pour les tables centrales de mon application, j'ai remplacé les NumAuto par des identifiants uniques générés dans le BeforeInsert.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Call Historise_Client_Agence(Me.[UID], Me.[Raison_sociale])
Comme Current est déclenché même en mode ajout, mon code est en fait ceci :
Avant que l'on ne m'en fasse la remarque, oui, c'est une gestion manuelle de la détection de l'ajout, et oui, j'aurais sans doute pu me contenter d'un Me.NewRecord = True, qui au passage ne fonctionne pas mieux (parce que je l'ai testé aussi)...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 If mode_entree <> "AJOUT" Then Call Historise_Client_Agence(Me.[UID], Me.[Raison_sociale]) End If
Quoiqu'il en soit, mon problème provient du fait, que lors de la sauvegarde de mon nouvel enregistrement :
a) Acces fait un premier passage dans Current, mode_entree à "AJOUT" et le code n'est pas exécuté, ce que j'attends ;
b) puis Access passe dans AfterInsert où je mets mode_entree à "". Jusque-là pas de problème ;
c) enfin, Access repasse dans Current, ça c'est plutôt bon pour moi car mon historique va alors être enregistré. Mais notre facétieux ami décide à ce moment-là de me dire que je procède à une utilisation incorrecte de Null (Erreur 94). De fait, mes deux paramètres sont Null !
Question : où sont donc passées mes valeurs ??
Fait "amusant" : j'ai bien sûr passé tout cela au debuggueur, plutôt deux fois qu'une, et il ne montre jamais le passage dans AfterInsert. J'ai dû y mettre un MsgBox pour le voir.
Merci aux contributeurs.
Partager