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 :

Imbrication de tables et listes à choix multiple [AC-2010]


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Santé

    Informations forums :
    Inscription : Août 2009
    Messages : 78
    Points : 68
    Points
    68
    Par défaut Imbrication de tables et listes à choix multiple
    Bonjour à tous,

    voilà, j'explique mon problème.

    j'ai 3 tables:
    • Une table TB_societes qui contient plusieurs sociétés de maintenance, avec comme fields: "ID_societe", "societe", "Adresse", etc...
    • Une table TB_contrat avec tous les contrats relatifs aux bâtiment (maintenance électrique, chauffage, clim, etc...) avec comme fields : "ID_contrat", "designation", "no_contrat", "titulaire"
    • Une table TB_batiments qui regroupe une liste de biens immobiliers avec divers informations et comme fields: "ID_batiment", "adresse", "surface", "contrats"


    Sur la table TB_contrat, le field "titulaire est lié à la table TB_société par le biai du liste avec en Row Source : SELECT [TB_societe].[ID_societe],[TB_societe].[societe] FROM TB_societe ORDER BY [societe];.
    Sur la table TB_batiment, le field "contrat" est lié à la table TB_contrat par le biai du liste (choix multiple avec casea à cocher) avec en Row Source : SELECT [TB_contrat].[ID_contrat],[TB_contrat].[designation],[TB_contrat].[no_contrat],[TB_contrat].[titulaire] FROM TB_contrat ORDER BY [designation];.

    J'ai un formulaire qui me sert de fiche bâtiment sur lequel apparaît toutes les information relatives au bâtiment et notement une List Box qui doit présenter les contrat existant en relation avec le bâtiment. Le Row Source pour cette List Box est : SELECT TB_contrat.[ID_contrat],[TB_contrat].[designation],[TB_contrat].[no_contrat],[TB_contrat].[titulaire] FROM TB_contrat ORDER BY [designation];.

    le soucis que j'ai est que tous les contrats apparaissent et pas seulement ceux en relation avec le bâtiment affiché sur mon formulaire. De plus, les nom des sociétés titulaires des contrats n'apparaissent pas sur cette liste, à la place, j'ai leur ID (ID_societe)

    merci d'avance pour votre aide.

  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 : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Intéresse-toi aux formulaires de type Pères/Fils.

    Si la notion ne t'est pas familière, regarde ici : http://claudeleloup.developpez.com/t...us-formulaire/
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Santé

    Informations forums :
    Inscription : Août 2009
    Messages : 78
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    je n’obtiens pas le résultat voulu avec un sous formulaire. Je vais essayer de prendre le problème autrement.
    Je pense que je ne créé pas mes liens correctement et c’est ce qui me pose problème.
    En oubliant ce que j’ai écrit plus haut, je vous présente le problème sous une autre forme :

    J’ai 3 tables :

    Une table TB_societe avec :
    • un field ID_SOCIETE pour la clé primaire (autonumber)
    • un field SOCIETE pour le nom de la société (text)


    Une table TB_contrats avec :
    • un field ID_CONTRAT pour la clé primaire (autonumber)
    • un field DESIGNATION (test)
    • un field TITULAIRE qui va chercher les info dans le table TB_societe


    Une table TB_batiment avec :
    • un field ID_BATIMENT pour la clé primaire (autonumber)
    • un field NOM pour le nom du bâtiment (text)
    • un field CONTRAT qui va chercher les info dans le table TB_contrat (l’option valeur multiple est cochée)


    Un même contrat peut couvrir plusieurs bâtiments, et un bâtiment peut être couvert par plusieurs contrats, donc il me faut une relation “many to many”. J’ai donc créé une table TB_jointure avec 2 fields clé primaire, ID_CONTRAT et ID_BATIMENT (de type number) que j’ai respectivement liés avec les ID des tables TB_contrat et TB_batiment.

    J’ai également créé une requête RQT_liste (pour test) qui affiches les fields suivants :
    • NOM (de la table TB_batiment)
    • DESIGNATION (de la table TB_contrat)
    • TITULAIRE (de la table TB_contrat)


    Dans la table TB_batiment, quand j’attribut un ou plusieurs contrats à un bâtiment via le field CONTRAT, ça n’a aucun impact sur la table TB_jointure ni sur la requête RQT_liste.
    Bien sûr, si je complète la table TB_jointure manuellement avec les ID restpectifs des bâtiments et des contrats, ça complète la requête RQT_liste correctement
    En fait, au vu du nombre de contrats et du nombre de bâtiment, (impossible de connaitre les ID par cœur) j’aimerai pouvoir sélectionner mes contrats pour chaque bâtiment via le field à valeur multiple CONTRAT de ma table TB_batiment.

    Est-ce possible ? Est-ce la bonne procédure ? N’y a-t-il pas de conflit de lien entre les tables TB_batiment et TB_contrat avec ce système ?

    merci d'avance pour votre aide.

    Sylvain

  4. #4
    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 : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Je te confirme que c'est à travers les formulaires pères/fils que réside la solution.

    Veux-tu ajouter à la db jointe (Access2000) tes trois tables (société, contrat, bâtiment) et donner quelques exemples de scénarios (tel contrat avec telle société pour tel bâtiment).

    On pourra alors dialoguer sur des cas concrets.
    Fichiers attachés Fichiers attachés
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Santé

    Informations forums :
    Inscription : Août 2009
    Messages : 78
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    alors je te joint une archive zip avec 2 fichiers. 1 version en Access 2000 et une en version 2007/2013
    La raison est la suivante: pour chaque bâtiments, j'ai plusieurs contrats (un pour l'electricité, un pour le chauffage, etc...) Access 2000 ne permet (à priori) pas de faire une liste à choix multiple dans un field.

    j'ai également créé un formulaire bâtiment qui présente les différentes infos mais j'ai remplacé le contrôle relatif aux contrats par une listebox (combox par défaut)

    En fait mon idée initiale était de faire apparaitre dans cette listebox les contrats relatifs aux batiments. Dans la version Access 2013 on voit clairement qu'ils apparaissent mais ils sont tous affichés avec ceux relatifs au bâtiment sont cochés. L'idée est bien sur de ne pas voir, dans cette liste, le "carré de coche" (checkbox) ni les contrats non concernés par le bâtiment.

    merci d'avance.

    Syl
    Fichiers attachés Fichiers attachés

  6. #6
    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 : 282 192
    Points
    282 192
    Par défaut
    Bonjour Syl,

    Tu as trois entités : des bâtiments, des sociétés, des types de contrats


    Nous avons besoin de tables de liaison pour construire ce modèle




    Pour alimenter tSocietes et tContratSoc, ce formulaire père/fils



    Pour alimenter tBatiments et tBatContrats, ce formulaire père/fils





    Remarque
    Le contrat peut être choisi indifféremment via les trois zones de liste, le choix dans l’une provoque la mise à jour automatique des deux autres listes.





    Cette technique est décrite dans ce tutoriel de Pierre Fauconnier : Sélection d'une donnée par l'une ou l'autre de ses propriétés.

    La db qui m’a servi à mettre au point est ici : http://claudeleloup.developpez.com/&...27Mafooley.mdb


    Maintenant convaincu que les pères/fils étaient la solution ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Santé

    Informations forums :
    Inscription : Août 2009
    Messages : 78
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    cette solution peut éventuellement faire l'affaire sous une condition. les utilisateurs ne doivent pas pouvoir modifier les contrats. A t on la possibilité de verrouiller le sous-formulaire ?

    Merci en tout cas.

    Sylvain

  8. #8
    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 : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    les utilisateurs ne doivent pas pouvoir modifier les contrats.
    Je ne comprends plus : le formulaire que je te propose, c'est précisément pour encoder => ça n'a plus de sens si on le verrouille !
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Santé

    Informations forums :
    Inscription : Août 2009
    Messages : 78
    Points : 68
    Points
    68
    Par défaut
    je ne veux justement pas encoder (pour le moment) C'est pour ça que j'étais partis initialement sur un formulaire avec une listbox pour afficher la liste des contrats et cela marche (voir mes fichiers joints) sauf que dans la liste, on voit tous les contrats. Il faudrait faire un filtre pour afficher uniquement ceux qui concerne le bâtiment et c'est là que je coince. De plus, au niveau de la liste des societes, le n° de clé primaire apparait à la place du nom de la societe.

  10. #10
    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 : 282 192
    Points
    282 192
    Par défaut
    OK !

    Désolé, je n'ai pas de solution à ton « problème ».
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  11. #11
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Santé

    Informations forums :
    Inscription : Août 2009
    Messages : 78
    Points : 68
    Points
    68
    Par défaut
    Pas de soucis.

    j'ai trouvé la solution au problème d'affichage de la clé primaire à la place du nom de la société, c'était juste une erreur de field... (je n'appelais pas le bon )

    Je me retrouve maintenant, sur mon formulaire bâtiment avec une listbox qui affiche tout les contrats enregistrés mais dans la première colonne, un checkbox coché (ou pas) si le bâtiment et concerné (ou pas) par le contrat. Cela permet 'avoir un appreçu juste des contrat concerné par le bâtiment "actif" du formulaire.

    J'ai réfléchi à un autre moyen mais je ne sais pas si c'est possible :

    Peut-on créer des requêtes variables ? j'explique :

    je créer une requête pour trier les enregistrements d'une table qui afficherait, pour chaque bâtiment, le ou les contrats respectifs. L'idée et de créer un filtre sur le field du bâtiment mais de manière variable pour que le filtre change en fonction d'une donnée prise, par exemple, dans un textbox.

  12. #12
    Membre actif

    Homme Profil pro
    Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Inscrit en
    Mai 2014
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Elève au Lycée ayant pour ambition Ingenieur Informaticien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 285
    Points : 268
    Points
    268
    Billets dans le blog
    1
    Par défaut
    bonsoir a vous (Claude,Mafooley)

    Excusez moi pour cette interruption c'est juste que je suis extrenement surpris de voir Claude dire:

    desole je n ait pas de solution.

    t inquiete pas mafooley tu aura tres vite une solution

    tu es sur l'un sinon le meilleur forum d aide informatique
    Cordialement,

    "C'est une requête SQL qui entre dans un bar, et le serveur répond : « Il n'y a plus de tables ! ».
    Refusée au bar, la requête SQL veut aller en boîte et le videur lui dit : « Non, dehors ! C'est select ici. »

    "

    Sankara Adama
    A+

  13. #13
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Santé

    Informations forums :
    Inscription : Août 2009
    Messages : 78
    Points : 68
    Points
    68
    Par défaut
    Hello tout le monde,

    et bien me revoilà après quelques semaines d'absence.

    J'ai trouvé ma solution inspiré du tuto de Claude assaisonné de requêtes qui récupèrent la condition dans un des contrôles de mon formulaire.

    Merci beaucoup, et à tout de suite cas je repars sur une autre question, mais ça, c'est un autre post...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/07/2014, 21h10
  2. Zone de liste à choix multiple
    Par zoom61 dans le forum Access
    Réponses: 2
    Dernier message: 31/01/2006, 14h06
  3. Utilisation des liste à choix multiples
    Par mic79 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/07/2005, 12h40
  4. recuperer valeur liste choix multiple
    Par gabychon dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/06/2005, 12h47
  5. [Débutant][JSP] récupération liste choix multiple
    Par Jovial dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/05/2004, 14h59

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