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

Modélisation Discussion :

Dans une table, deux champs liés à une autre table.


Sujet :

Modélisation

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Dans une table, deux champs liés à une autre table.
    Bonjour à tous,

    Désolé si l'intitulé n'est pas très clair, je vais tâcher d'être plus précis.

    Je suis débutant sur access.

    J'ai une table "évènements". Pour chaque évènement, il y a deux participants. La table "évènement" contient donc les champs "participant 1" "participant 2".

    Je voudrais pour chacun de ces champs, une liste déroulante liée à une table "liste_participants".

    J'ai fait des tests avec un seul participant et je n'ai pas de soucis. Lorsque je clique dans la table "liste_participants" sur une ligne, j'obtiens bien la liste des évènements auxquels le participant en question a pris part.

    Par contre avec deux participants, cela ne marche uniquement si les deux participants sont identiques. (ce qui ne me sert à rien)

    J'en appelle donc à votre aide.

    Par avance, un grand merci !

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Premièrement tu as un problème de structure. Si on veut être stricte tu devrais avoir une table ParticipantEvenement dont l'architecture est la suivante :

    ClefEvenement
    ClefParticipant

    Avec un index unique sur l'association ClefEvenement, ClefParticipant pour t'assurer que tu ne mets pas 2 fois le même participant pour un événement.

    (pour accéder au index appuyer sur l'îcone avec l'éclair dans le design de la table.)

    Note que cette architecture permet un nombre infini (enfin presque :-) de participants.

    Ça c'est si tu veux être rigoureux (ce que je recommande TRÈS vivement) dans ta structure de base de données.

    Si tu ne désires pas changer ton architecture actuelle, il suffit de faire 2 relations avec 2 fois la table Participant.

    Dans la fenêtre des relations il faut demander l'ajout de Particpant 2 fois. Cela va afficher Particpant et Participant_1 mais en réalité c'est la même table.

    Ensuite créer tes relations : une entre [Evenement].[ClefParticipant1] et [Participant].[ClefParticipant] et entre [Evenement].[ClefParticipant2] et [Participant_1].[ClefParticipant].

    Note qu'avec cette structure, une personne peut être à la fois participant1 et participant2.

    A+

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup Marot pour ta réponse.

    Si tu ne désires pas changer ton architecture actuelle, il suffit de faire 2 relations avec 2 fois la table Participant.

    Dans la fenêtre des relations il faut demander l'ajout de Particpant 2 fois. Cela va afficher Particpant et Participant_1 mais en réalité c'est la même table.

    Ensuite créer tes relations : une entre [Evenement].[ClefParticipant1] et [Participant].[ClefParticipant] et entre [Evenement].[ClefParticipant2] et [Participant_1].[ClefParticipant].

    Note qu'avec cette structure, une personne peut être à la fois participant1 et participant2.
    Deux problèmes avec cette solution :
    1) Comme tu le soulignes, on peut mettre deux fois le même participant pour le même évènement.
    2) De plus, pour que dans la table participants, un évènement soit "comptabilisé" dans la sous-feuille d'un participant, il faut justement que celui ci soit participant 1 ET participant 2...

    tu devrais avoir une table ParticipantEvenement dont l'architecture est la suivante :
    ClefEvenement
    ClefParticipant
    Il s'agit de la fameuse relation plusieurs à plusieurs dont j'ai trouvé plusieurs tuto sur le net. Mais je ne comprend quelque chose qui semble évident à tout le monde :
    Une fois que les relations sont crées, comment fait-on (en détails) pour que le obtenir une liste à choix multiple dans les champs "participant 1" et "participant 2" ?

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Il s'agit de la fameuse relation plusieurs à plusieurs dont j'ai trouvé plusieurs tuto sur le net.
    Absolument.

    Mais je ne comprend quelque chose qui semble évident à tout le monde :
    Une fois que les relations sont crées, comment fait-on (en détails) pour que le obtenir une liste à choix multiple dans les champs "participant 1" et "participant 2" ?
    Là je ne suis pas sur de comprendre aussi vais-je faire 2 réponses.

    Hypothèse 1 : tu utilises la table ParticipantEvenement.

    Dans ce cas, tu choisi chacun des participants 1 à 1 et tu ajoutes un enregistrement pour chaque participant donc ta liste est une simple liste basée sur la table des participants.

    Hypothèse 2 : tu utilises 2 champs participant dans la table Evenement.

    Là encore, tu peux simplement définir les 2 listes comme des listes basées sur la table des participants.

    Pour éviter qu'un participant soit mis 2 dois sur le même energistrements d'événement tu peux avoir une fonction VBA qui vérifie la saisie et prévient l'utilisateur.

    Tu pourrais aussi sans doute y arriver avec des listes mutulellement dépendantes.

    A+

Discussions similaires

  1. Matcher deux champs d'une table sur une autre
    Par lepotier dans le forum Développement
    Réponses: 2
    Dernier message: 14/12/2012, 10h33
  2. Réponses: 3
    Dernier message: 06/09/2008, 06h51
  3. Réponses: 1
    Dernier message: 11/07/2008, 12h04
  4. [MySQL] sélectionner dans une table deux champs identiques
    Par zabdaniel dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/03/2008, 17h49
  5. Comment afficher deux champs d'une table dans une comboBox
    Par lamia2007 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/04/2007, 08h17

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