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 :

Formulaire lié à plusieurs tables [AC-2010]


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    hahahaha
    Inscrit en
    Avril 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : hahahaha

    Informations forums :
    Inscription : Avril 2013
    Messages : 61
    Points : 34
    Points
    34
    Par défaut Formulaire lié à plusieurs tables
    Bonjour à tous, tout d'abord voici ma base pour mieux comprendre mon problème :

    J'ai créé un formulaire basé sur une requête pour pouvoir accéder aux informations du contrevenant son PV et le motif du PV :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM pv, contrevenant, motif
    WHERE ( pv.contrevenant=contrevenant.id_contrevenant AND pv.num_pv=[forms]![recherche1]![num_pv] AND pv.motif=motif.num_motif);
    pour pouvoir accéder aux données de la base, pouvoir les modifier, puis, enregistrer les modifications faites. Cela fonctionne pour tous mes champs sauf celui du motif (zone de liste déroulante) et du montant correspondant au motif (zone de texte). J'aimerais que ces champs soient liés, que lorsque je choisis un montant dans ma liste, le montant correspondant s'affiche dans ma zone de texte correspondante car cette zone de texte me permet de calculer un montant total (champ calculé) par la suite en l'additionnant avec d'autres.

    Si quelqu'un peut m'aider je ne sait plus comment faire je m'embrouilles avec ces champs qui sont dans les tables différentes mais pas tous car l'id est dans les deux donc le quel mettre dans le formulaire et faut-il aussi ajouter le montant_motif à la table pv ? c'est le flou complet...

    Merci par avance pour votre patience

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Comment tu as créé ta zone de liste?

    Je pense qu'il suffirait de créer un formulaire avec ta table pv.

    Les 3 autres tables te serviront à trouver des informations uniquement (uniques à partir des id)
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    hahahaha
    Inscrit en
    Avril 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : hahahaha

    Informations forums :
    Inscription : Avril 2013
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Bonjour et merci pour votre réponse,

    mon formulaire n'est pas créé sur la table pv car je fais une recherche sur un certain pv donc le formulaire est créé sur la requête en question qui me selectionne mon pv pour que je n'ai que lui.

    Les champs du formulaire sont "liés" à la table PV par la source de contrôle en indiquant le nom du champ de la table PV. La zone de liste concernant le motif a été crée sur le champ motif de ma table PV et a pour contenu une requête de sélection dans la table motif ou je sélectionne le numéro de motif et le montant mais je ne fais afficher que le numéro dans la liste.

    Dans ma zone de texte ou je veux le montant correspondant j'ai mis comme source de contrôle "=[motif].[column](1)" j'ai donc bien le montant qui s'affiche quand je change de motif mais comment l'enregistrer dans la table PV car le numéro s'enregistre bien (il est lié a la table PV) mais pas le montant correspondant... ??

    Pareil pour une autre zone de texte, c'est un champ calculé de 3 autres zones de texte, le calcul s'effectue bien mais impossible de l'enregistrer car dans source de contrôle j'ai "=[montant_infra]+[majoration]-[reduction]" du coup la valeur ne change que dans le formulaire et pas dans ma base alors que vu que les autres champs sont lié à la table PV, ils mettent directement la base à jour.

    J'ai essayé de rajouter une requête en VBA pour mettre à jour ces 2 champs mais j'ai des souci car j'ai un message d'erreur qui me dis qu'il y a conflit d'écriture (le formulaire met à jour la base et ma requête aussi)...

    Je sais pas si je suis clair

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Quand tu dis ça :
    quand je change de motif mais comment l'enregistrer dans la table PV car le numéro s'enregistre bien (il est lié a la table PV) mais pas le montant correspondant... ??
    Tu veux enregistrer le montant correspondant dans quel champ de quelle table?

    Car je ne vois qu'un champ montant_total dans ta table pv qui pourrait recevoir la valeur de "=[montant_infra]+[majoration]-[reduction]"

    @+
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    hahahaha
    Inscrit en
    Avril 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : hahahaha

    Informations forums :
    Inscription : Avril 2013
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    C'est bien cela, je veux l'enregistrer dans la table PV et dans le champ montant_total mais vu que la source de contrôle est : "=[montant_infra]+[majoration]-[reduction]" il n'y a pas montant_total dedans donc la zone de texte n'est pas "liée" à ma table PV et quand sa valeur change, elle n'est pas sauvegardée dans la table tout comme le la zone de texte récupérant le montant du motif, elle a pour source de contrôle la seconde colonne de ma liste déroulante donc elle n'est pas "liée" au champ montant_motif la table PV donc ça ne se met pas à jour non plus

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Doucement,

    Dans ta table pv tu as 1 champ (montant_total) pour recevoir une valeur de montant.

    Qu'est ce que tu veux mettre dedans :
    montant_motif OU le résultat de "=[montant_infra]+[majoration]-[reduction]"

    Tu comprends bien qu'on ne peut pas enregistrer les 2 valeurs dans le même champ de ta table.

    Si tu veux les 2 valeurs, il faudrait rajouter un champ dans la table
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    hahahaha
    Inscrit en
    Avril 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : hahahaha

    Informations forums :
    Inscription : Avril 2013
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    montant_total est le nom de mon champ et le nom de de ma zone de texte dans mon formulaire c'est pas bien je sais ^^

    Dans mon formulaire, ma zone de texte montant_total reçois déjà "=[montant_infra]+[majoration]-[reduction]" je l'ai mis dans la source de contrôle et il additionne bien tout , le souci c'est pour que le champ montant_total de ma table PV soit mis à jour comme les autres champs de mon formulaire car les autres dans la source de contrôle ils ont le nom de leur champ de la table PV donc dès que je je les modifie et que je ferme le formulaire, ma table est mise à jour avec les modifs mais pas ce champ car j'ai mis le calcul cité plus haut et pas le nom du champ de la table PV..

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    La solution serait :

    Tu mets comme source de la zone de texte montant_total de ton formulaire le champ montant_total de la table.

    Pour le mettre à jour à chaque changement de valeurs de ta zone de liste, sur son évènement AprèsMisAJour (tu vas dans Propriétés/Evènements et appuies sur les ... à la fin de AprèsMisAJour), tu mets le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.montant_total = Me.montant_infra+Me.majoration-Me.reduction
    Obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private sub NomTaZDL_AfterUpDate()
    Me.montant_total = Me.montant_infra+Me.majoration-Me.reduction
    End Sub
    Pour plus de fiabilité des données, il faudrait créer un module d'ensemble avec le code et l'appeler sur les évènements AprèsMisAJour des 3 autres contrôles qui participent à la sommation.

    @+
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    hahahaha
    Inscrit en
    Avril 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : hahahaha

    Informations forums :
    Inscription : Avril 2013
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Ok super ça marche impec' pour le montant_total ça s'enregistre bien merci beaucoup

    Mon deuxième souci c'est pour ma zone de liste déroulante "motif" et la zone de texte "montant_motif" qui prend le montant correspondant au motif choisi.

    Le champ "motif" de la base PV qui est une liste déroulante "motif" dans mon formulaire s'enregistre bien dans la base mais la zone de texte "montant_motif" qui a pour champ "montant_motif" dans ma base PV (je l'ai rajouté depuis il n'était pas dans le schéma en photo) ne se met pas à jour car dans sa source de contrôle il y a "=[motif].[column](1)" pour récupérer la valeur de la seconde colonne de ma liste... c'est donc a peu près le même souci que précédemment mais avec cette zone de texte.

    je suppose donc que dans la source de ma zone de texte je dois mettre "montant_motif" comme précédemment pour effectuer le lien avec ma table PV mais comment récupérer la valeur de la deuxième colonne de ma liste ?

  10. #10
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Même code que précédemment avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.montant_motif = me.motif.column(1)
    à rajouter dans la procédure AprèsMisAjour de ta zone de liste.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    hahahaha
    Inscrit en
    Avril 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : hahahaha

    Informations forums :
    Inscription : Avril 2013
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    C'est presque bon, mais du coup quand je change la valeur de ma liste le montant correspondant ne bouge plus tout seul, il me laisse l'ancien qui est stocké dans ma table...

  12. #12
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Quel montant ?
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    hahahaha
    Inscrit en
    Avril 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : hahahaha

    Informations forums :
    Inscription : Avril 2013
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Voilà mon formulaire ce sera sans doute plus clair ^^



    la liste déroulante est basée sur une requête dans la table motif pour les selectionner avec les montants correspondants et quand je change de motif je voudrait que le montant correspondant se mette dans la zone de texte c'est pour ca que j'avais mis =[motif].[column](1) dans sa source de ma zone de texte mais il n'étais pas lié à ma table donc j'ai mis cette étape dans le VBA comme vous m'avez dis précédement et dans la source j'ai mis le champ de ma table mais du coup c'est plus lié à ma liste déroulante lol.

    Comment allier les deux, lier la zone de texte à mon champ de ma table (ça c'est fait) et lier la zone de texte à ma liste déroulante (reste à faire) ?

  14. #14
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    1- Tu caches cette zone de texte montant_motif en mettant à Non sa propriété visible avec sa valeur mis à jour par VBA.

    2 - Tu crées une nouvelle zone de texte indépendante comme on dit, avec comme source =[motif].[column](1).
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    hahahaha
    Inscrit en
    Avril 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : hahahaha

    Informations forums :
    Inscription : Avril 2013
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Merci beaucoup pour cette solution je n'y avais pas pensé et quand vous dites
    sa valeur mis à jour par VBA
    c'est a dire que je récupère la valeur dans la zone de texte et je la met dans celle qui est cachée ou faire une requête SQL pour mettre la table à jour?

  16. #16
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Non tu laisses tout tel quel, ajoute seulement la nouvelle zone de texte.
    J'explicitais comme on dit ce qui est déjà fait.

    Bonne continuation
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    hahahaha
    Inscrit en
    Avril 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : hahahaha

    Informations forums :
    Inscription : Avril 2013
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Ok merci beaucoup pour votre aide et bonne continuation à vous aussi

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

Discussions similaires

  1. Formulaire avec plusieurs tables
    Par Ledaf dans le forum IHM
    Réponses: 10
    Dernier message: 03/03/2009, 08h45
  2. Formulaire utilisant plusieurs tables
    Par Yoshi592 dans le forum IHM
    Réponses: 4
    Dernier message: 05/07/2007, 15h24
  3. Réponses: 1
    Dernier message: 20/06/2007, 03h18
  4. Réponses: 7
    Dernier message: 04/04/2007, 16h34
  5. Sous formulaire comprenant plusieurs tables
    Par aiderecquise dans le forum IHM
    Réponses: 2
    Dernier message: 24/11/2006, 17h37

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