Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/11/2011, 10h13   #1
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 0
Points : 0
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 !
julienbru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 21h55   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 475
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 475
Points : 7 561
Points : 7 561
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+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 24/11/2011, 01h44   #3
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 0
Points : 0
Merci beaucoup Marot pour ta réponse.

Citation:
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...

Citation:
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" ?
julienbru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 18h49   #4
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 475
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 475
Points : 7 561
Points : 7 561
Citation:
Il s'agit de la fameuse relation plusieurs à plusieurs dont j'ai trouvé plusieurs tuto sur le net.
Absolument.

Citation:
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+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h08.


 
 
 
 
Partenaires

Hébergement Web