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

Access Discussion :

Validation des données entre le formulaire principal et son sous-formulaire


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 35
    Points
    35
    Par défaut Validation des données entre le formulaire principal et son sous-formulaire
    Bonjour à tous,
    Depuis plusieurs jours, j'essaie de mettre en place le contrôle suivant :

    Formulaire principal : j'introduis un MONTANT.
    Sous-formulaire : je ventile ce montant par poste budgétaire.

    Avant la mise à jour des données dans la table attachée au formulaire et la table attachée au sous-formulaire, je vérifie que le montant (formulaire principal) est EGAL à la somme des montants du sous-formulaire.

    Je crois que j'ai essayé de mettre mon code au niveau de tous les évènements proposés par VBA sous Access. Lorsque j'emploie Form_BeforePDATE dans le formulaire principal : je ne peux passer dans le sous-formulaire ; si j'emploie Form_Current dans le formulaire principal : le message arrive trop tardivement; si j'emploie un contrôle dans le sous-formulaire ce n'est pas mieux...
    En un mot le contrôle de cohérence devrait arriver lorsque la totalité du formulaire est complet et doit être sauvegardé dans les 2 tables.
    En pièce jointe le hardcopy d'écran.
    Merci de votre collaboration.
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Je pense que tu dois répéter le total des montants du sous formulaire dans ton formulaire principal eet faire la comparaison de ces deux valeurs.
    Si ces valeurs sont les mêmes, tu peux alors fermer ton formulaire.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 35
    Points
    35
    Par défaut
    Oui! c'est exactement ce que j'ai fait...la remontée d'info dans le formulaire principal fonctionne très bien.
    Le problème est de placer le code dans le bon évènement de façon à empêcher la maj. Le problème vient uniquement du fait que la validation est tributaire de 2 évènements : 1) Celui du formulaire principal qui contient un seul enregistrement. 2) Celui du sous-formulaire qui contient 'x' enregistrements et dont le cumul des montants doit être égal au montant du formulaire principal.
    On a donc une désynchronisation entre les 2 évènements. Sous Access, la mise à jour s'effectue sur la sortie de chaque champ et non globalement pour l'enrgt en cours.
    Je pense que le problème que je rencontre n'est pas unique à moi.
    La solution que l'on peut mettre en oeuvre, c'est tout simplement de retirer ce contôle!!!: mais j'aimerais le conserver!!!!!

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    A quel moment veux tu faire apparaître le message ?

    Pour ma part, dans ce cas de figure, je désactive par défaut tous les boutons du formulaire, et je les réactive lorsque les conditions sont remplies.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    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 PhilC,

    tu peux peut-être essayer avec l'évènement 'Sur Sortie' du contrôle Sous-formulaire.
    Il se déclenche lorsqu'on quitte le sous-formulaire.
    Tu peux annuler l'action 'Sortie' si les conditions requises ne sont pas satisfaites.

    A+

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 35
    Points
    35
    Par défaut
    Bonjour à Heureux-oli et à LedZeppII.
    Réponse à Heureux-oli : le message doit apparaître avant que l'on soit passé sur l'enrgt suivant ou précédent, ou avant que la personne quitte le formulaire. Par ailleurs, la solution de désactiver les boutons est sympa. mais il faut également gérer les touches clavier comme : PageUp, PageDown, KeyDown, KeyUp, ...Cela fonctionne mais peut être est-ce une usine à gaz pour accoucher d'une souris!!!. Ce sera ma solution de repli si je ne trouve rien d'autre.
    Réponse LedZepp II : Cette solution est également très sympa. Le seul souci, l'utilisateur ne doit pas se tromper sur la valeur MONTANT du formulaire principal, sinon il ne peut plus sortir du sous formulaire! Ou alors il ne lui reste plus qu'à attribuer une valeur 'bidon' pour en sortir, puis retourner au Montant principal pour donner sa bonne valeur et de nouveau retourner au montant 'bidon' du sous formulaire pour redonner sa bonne valeur.
    Dans un cas, on décuple la programmation, dans l'autre on alourdit le travail de la personne qui saisit.
    Qu'en pensez-vous? Que choisisseriez vous?
    En tant cas mille merci à vous 2.

Discussions similaires

  1. Réponses: 7
    Dernier message: 01/02/2013, 20h10
  2. Réponses: 3
    Dernier message: 14/09/2009, 10h56
  3. Réponses: 2
    Dernier message: 23/07/2009, 14h18
  4. Réponses: 6
    Dernier message: 23/02/2007, 10h56
  5. Réponses: 4
    Dernier message: 08/02/2007, 15h00

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