IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Problème dans la gestion des événements lors de l'ajout d'un enregistrement


Sujet :

VBA Access

  1. #1
    Membre averti
    Homme Profil pro
    Buisint
    Inscrit en
    Septembre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Buisint

    Informations forums :
    Inscription : Septembre 2008
    Messages : 220
    Points : 438
    Points
    438
    Par défaut Problème dans la gestion des événements lors de l'ajout d'un enregistrement
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Historise_Client_Agence(Me.[UID], Me.[Raison_sociale])
    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.

    Comme Current est déclenché même en mode ajout, mon code est en fait ceci :
    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
    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)...

    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.

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Puisque tu as inséré, ne serais-tu pas passé à l'enregistrement suivant** :
    - ce qui expliquerait la nouvelle exécution de current dont tu parles ;
    - et que sur ce nouvel enregistrement, tes deux paramètres sont à Null.


    ** À mon avis, c'est le cas si la propriété Cycle de ton formulaire est "Tous les enregistrements".
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre averti
    Homme Profil pro
    Buisint
    Inscrit en
    Septembre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Buisint

    Informations forums :
    Inscription : Septembre 2008
    Messages : 220
    Points : 438
    Points
    438
    Par défaut
    Bonjour Claude,

    Merci de ta réponse.
    Je ne fais rien de volontaire pour passer au suivant.
    Mais ton idée du cycle me plaît bien, je regarderai ça lundi au bureau.

    Bon week-end.

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Je pense que Claude veut te dire que dans ton c) tu n'es plus le même enregistrement.

    Voila l'enchainement des événements tels que je le vois:

    a) Je vais sur un nouvel enregistrement -> Sur activation (Current)

    b.1) Je commence à saisir une donnée -> Avant insertion (BeforeInsert) (Cela correspond au moment de l'apparition du crayon au niveau du sélecteur d'enregistrement)
    b.2) Je continue à entrer des données -> événements au niveau contrôles

    c) Je sauve l'enregistrement -> Après insertion (AfterInsert)
    ou
    d) Je vais sur un autre enregistrement -> Après insertion (AfterInsert) -> Sur activation (Current)

    Dans le c) il n'y a pas d'événement Sur activation (Current) car on a sauvé l'enregistrement sans le quitter.

    Dans le d) le fait de changer d'enregistrement entraine la sauvegarde de l'enregistrement en cours, avant le quitter.
    L'événement Sur activation (Current) est celui de l'enregistrement vers lequel on s'est déplacé, et non celui du nouvel enregistrement sauvegardé.

    A+

  5. #5
    Membre averti
    Homme Profil pro
    Buisint
    Inscrit en
    Septembre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Buisint

    Informations forums :
    Inscription : Septembre 2008
    Messages : 220
    Points : 438
    Points
    438
    Par défaut
    Bonjour LedZeppII,

    Merci pour tes précisions, qui confirment ce que je pensais avoir compris.

    Concernant le crayon, indiquant le passage dans BeforeInsert, je ne le vois pas car je l'ai dissimulé, étant en mode "Formulaire unique".
    Mais je note avec grand intérêt que réactiver son affichage temporairement me permettrait une forme de débuggage.

    Je regarde cela demain.

  6. #6
    Membre averti
    Homme Profil pro
    Buisint
    Inscrit en
    Septembre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Buisint

    Informations forums :
    Inscription : Septembre 2008
    Messages : 220
    Points : 438
    Points
    438
    Par défaut
    Bonjour Claude et LedZep II,

    Bon alors, mon formulaire était en Cycle "Enregistrement en cours".
    Ce n'était donc pas la cause de mon second passage dans Current.

    Cela dit, je crois que j'ai trouvé la source de mes ennuis : il s'agirait d'un Me.Requery effectué dans un Form_AfterUpdate dans le but de mettre à jour les sous-formulaire qui liste les contacts associés à la société.

    Il faut donc que je trouve une autre méthode pour que le simple Requery pour actualiser mon sous-formulaire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/09/2007, 16h53
  2. Problème avec la gestion des événements
    Par Franck.H dans le forum SDL
    Réponses: 32
    Dernier message: 26/02/2007, 16h01
  3. Problème avec la gestion des événements
    Par CynO dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/10/2005, 10h07
  4. Gestion des évènements lors d'un clique sur une image.
    Par yoghisan dans le forum Débuter
    Réponses: 7
    Dernier message: 23/06/2005, 19h04
  5. Réponses: 2
    Dernier message: 11/05/2005, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo