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

IHM Discussion :

Fermer puis réouvrir un formulaire pour valider la saisie [AC-2003]


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 34
    Points : 32
    Points
    32
    Par défaut Fermer puis réouvrir un formulaire pour valider la saisie
    Bonjour,

    j'ai un formulaire F_Commande basé sur une requête , que j'ouvre en mode ajout ou edit. Ce formulaire contient un bouton "Valider", qui déclenche l'exécution de code vba :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    OuiNon = MsgBox("Confirmez-vous la validation de cette commande ?", vbYesNo)
        If OuiNon = vbYes Then
            'Désactivation des messages d'avertissement
            DoCmd.SetWarnings False
     
            'Mise à jour de la commande en état V
            DoCmd.RunSQL "UPDATE Commande SET Commande.Etat = ""V"" WHERE (Commande.CodeCde = Forms![F_Commandes]![CodeCde])"
     
            MsgBox "Commande n° " & [RefCde] & " validée."
     
    'Insertion de l'évènement COMV dans la table Evenement
            VarRefCde = Me.RefCde
            VarCodeUtil = Me.CodeUtil
            DoCmd.RunSQL "INSERT INTO Evenement (CleCarton,CodeTypeEvent, DateEvent, Quantite, CodeUtil) VALUES (" & VarRefCde & ",'COMV',Format(Date(),'dd/mm/yyyy'),0," & VarCodeUtil & ")"
    Le pb est que si je valide la commande après avoir saisi ou modifié un champ, j'ai un plantage. Je ne l'ai pas si je sors et rentre à nouveau dans ma commande avant de la valider.

    Est-il possible dans ce code de forcer la fermeture puis la réouverture du formulaire afin d'éviter ce plantage et que cela soit transparent pour l'utilisateur ?
    J'ai pensé que je pouvais créer une variable globale avec le nom du formulaire, je faire un DoCmd.Close au click sur le bouton Valider, mais comment réouvrir ce formulaire et lancer le procédure de validation automatiquement ?
    Merci pour vos réponses

  2. #2
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonjour.

    Il faut peut-être utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.requery, ou me.refresh
    après la saisie.


    Pierre

  3. #3
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 57
    Points : 70
    Points
    70
    Par défaut
    Ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunCommand acCmdSaveRecord
    au début de ton code pour forcer l'enregistrement ?

    Peux-tu préciser quel plantage tu as ?

    LilyX

  4. #4
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    Désolée de reprendre ce fil après si longtemps. Je suis à nouveau sur ce pb que je n'ai toujours pas réussi à résoudre.

    j'ai essayé Me.requery, Me.refresh, DoCmd.RunCommand acCmdSaveRecord mais rien ne marche. J'ai réactivé les messages d'alerte et voici ce qu'il me dit quand je valide une commande dont un des champs a été modifié : Impossible de mettre à jour un enregistrement à cause d'une violation de verrou. Pourtant si je referme et ouvre à nouveau le formulaire, la validation ensuite se passe bien. Comment forcer le formulaire à se recharger et donc à libérer ce verrou, tout en conservant le n° de Cde en cours ?

    Merci pour vos réponses

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    Précision d'importance après de nouveaux tests :

    - pour une commande déjà créée, qui a été refermée puis que l'on ouvre à nouveau pour la valider, le Me.requery résoud effectivement le pb : même si je valide après avoir fait des modifs dans certains champs, la validation se passe bien (plus de message sur le verrou) : MERCI !!

    - pour la validation d'une commande que l'on vient de créer, j'ai le message d'erreur 3194 sur la requete INSERT INTO, car Me.RefCde et Me.CodeUtil sont null (l'enregistrement n'est pas encore réalisé dans la table). J'ai ajouté la ligne DoCmd.RunCommand acCmdSaveRecord, mais cela ne change rien. Je dois donc trouver le moyen de forcer l'enregistrement d'une commande avant sa validation.

    Une autre idée ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    Autant pour moi

    Ce n'est pas Me.Requery qu'il fallait utiliser mais Me.Refresh.

    En effet, c'est le Me.Requery (qui fonctionnait en modification de commande), qui provoquait le message d'erreur pour une commande en cours de création. Un Me.Refresh me permet de mettre à jour une commande modifiée, et ne bloque plus les requetes SQL quand il s'agit d'une nouvelle commande.

    Merci à tous !

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

Discussions similaires

  1. [AC-2007] Comment faire pour valider la saisie d'un champs automatiquement ?
    Par tibofo dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/10/2011, 14h45
  2. Réponses: 2
    Dernier message: 02/06/2010, 13h12
  3. Fonction strlen pour valider la saisie
    Par Andéa dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2009, 14h03
  4. Formulaire pour valider mot de passe
    Par info3licen dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 19/04/2009, 18h50
  5. formulaire pour valider un panier
    Par shgeoffrey dans le forum Langage
    Réponses: 3
    Dernier message: 25/09/2008, 22h22

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