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 :

Table de jonction et formulaire [AC-2010]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Points : 23
    Points
    23
    Par défaut Table de jonction et formulaire
    Bonjour,

    En attachement, vous pourrez trouver la structure des tables de ma base de données.
    La table T_Membre contient les informations sur les membres de l'ASBL.
    La table T_Localité contient une liste de code postal et de ville qui sont utilisés dans une liste déroulante de la table T_Membre.
    La table T_Saison contient juste l'intitulé d'une saison sportive (en l'occurence, la période : 2012-2013, 2013-2014, 2014-2015, etc)
    Et la table T_Jonction est prévue pour associer à chaque membre un certain nombre d'information par saison.

    J'ai créé un formulaire qui contient les enregistrements de la table T_Membres et de la table T_Localité.

    Lorsque je n'établi aucune relation entre la table T_Membre et la table T_jonction, je peux naviguer au sein de tout les enregistrements de la table T_Membre.
    Lorsque j'établi une relation entre la table de jonstion et les table T_Membre et T_Saison, dans le formulaire, je peux uniquement naviguer entre les membres de l'ASBL pour les quels il y a une entrée dans la table de jonction.

    Je ne comprend pas pourquoi je ne peux plus naviguer sur l'ensemble des enregistrements?

    Merci.
    Images attachées Images attachées  

  2. #2
    Membre expérimenté
    Avatar de minot83
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2006
    Messages
    972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 972
    Points : 1 430
    Points
    1 430
    Par défaut
    Bonsoir,

    il faut que tu précises au niveau de la relation entre tes 2 tables (dans ton formulaire) que tu souhaites voir tous les enregistrements de la table T_Membre et seulement ceux qui correspondent de la seconde table.

    Cordialement

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Bonsoir minot83,

    Je ne sais pas trop comment réaliser l'opération que tu suggères.

    J'ai cependant cliqué sur les ... qui se trouve dans le champ source de la feuille de propriété du formulaire.
    A ce moment là, s'ouvre un générateur de requête pour mon formulaire.
    Si j'essaie de changer et de valider les propriétés des relations entre table, access me renvoie le message d'erreur suivant : "Expression JOIN non supportée".

  4. #4
    Membre expérimenté
    Avatar de minot83
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2006
    Messages
    972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 972
    Points : 1 430
    Points
    1 430
    Par défaut
    Tu as combien de tables liées derrière ton formulaire?

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Les mêmes tables que celles qui se trouvent dessinées dans le fichier jpeg attaché à mon premier message.

    Voici la requêtes SQL attachée à mon formulaire:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T_Membres.Titre, T_Membres.Nom, T_Membres.Prenom, T_Membres.Rue, T_Membres.Naissance, T_Membres.TelPrive, T_Membres.TelPriveCom, T_Membres.GSM, T_Membres.GSMCom, T_Membres.Tel1, T_Membres.Tel1Com, T_Membres.Tel2, T_Membres.Tel2Com, T_Membres.Email, T_Membres.Remarques, T_Membres.ClDame, T_Membres.ClHomme, T_Membres.NumAffiliation, T_Membres.AnneeAffiliation, T_Localite.CP, T_Localite.Localite, T_Membres.T_Localite_Numéro, T_Membres.[Actif], T_Membres.Belote, T_Membres.Tag, T_Membres.RFS, T_Membres.RepasDucasse, T_Membres.Choucroute, T_Membres.Titre_Publipostage, T_Jonction_Membres_Saison.cotisation, T_Jonction_Membres_Saison.notedebar, T_Jonction_Membres_Saison.datecotisation, T_Saison.saison
    FROM T_Saison INNER JOIN ((T_Localite INNER JOIN T_Membres ON T_Localite.Numéro = T_Membres.T_Localite_Numéro) INNER JOIN T_Jonction_Membres_Saison ON T_Membres.ID = T_Jonction_Membres_Saison.id_membre) ON T_Saison.id_saison = T_Jonction_Membres_Saison.id_saison
    ORDER BY T_Membres.Nom, T_Membres.Prenom;

  6. #6
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut Un seul sens
    Tu dois créer une requête sur lequel ton formulaire sera basé. Avec l'outil d'Access voici à quoi doit ressembler ta requête.

    En SQL:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T_Membre.N°, T_Membre.Champ1, T_Membre.Champ2, T_Membre.Champ_etc
    FROM ((T_Membre LEFT JOIN T_Jonction ON T_Membre.T_Jonction = T_Jonction.N°) LEFT JOIN T_Localité ON T_Membre.T_Localité = T_Localité.N°) LEFT JOIN T_Saison ON T_Jonction.N° = T_Saison.T_Jonction;
    Bonne journée
    Images attachées Images attachées  

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Bon, je trouve que cela se complique. Il est vrai que je démarre avec access et que je commet peut-être des erreurs de base.
    Robert1957, j'ai plusieurs questions concernant ta réponse:

    1. J'ai directement créé mon formulaire à partir des tables. Tu sembles me conseiller de créer mon formulaire à partir d'une requête. Quelle est l'avantage d'une méthode sur l'autre
    2. La structure de la table de jonction que tu proposes est différente le la mienne. Ma table de jonction a une clé primaire formée des deux clé primaire des table T_membre et T_Saison. Ta proposition montre une table de jonction avec une clé primaire indépendante qui est recopiée dans un champ de la table T_Membre et dans un champ de la table T_Saison. Quelle est la différence entre les deux méthodes et laquelle est préférable?


    Merci.

  8. #8
    Membre expérimenté
    Avatar de minot83
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2006
    Messages
    972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 972
    Points : 1 430
    Points
    1 430
    Par défaut
    cette requête est à mettre en place dans la source de ton formulaire.
    Pour ça, tu dois modifier chaque relation, uniquement à cet endroit.

  9. #9
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    L'avantage est que tu peux choisir comment se comportera l'affichage de données. Dans ton cas tu veux voir tous les membres donc tu dois spécifié cela au niveau d'une requête.

    Pour la structure de tes tables il n'y a pas de différences majeures:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T_Membre.*
    FROM ((T_Membre LEFT JOIN T_Localité ON T_Membre.N° = T_Localité.T_Membre) LEFT JOIN T_Jonction ON T_Membre.N° = T_Jonction.T_Membre) LEFT JOIN T_Saison ON T_Jonction.T_Saison = T_Saison.N°;
    Images attachées Images attachées  

  10. #10
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Merci pour les réponses, mais cela ne fonctionne pas encore comme je le désire.

    J'ai un premier problème de compréhension au niveau des jointures LEFT JOIN et RIGHT JOIN. Comment identifie-t-on la table de gauche de la table de droite, parce que sur le graphique des relations, je peux positionner les tables ou je veux et donc, une même table peut être graphiquement positionnée à gauche ou à droite d'une table de référence par exemple.

    Au final, la solution proposée me permet de parcourir tous les membres de l'ASBL dans mon formulaire. J'ai également inséré les champs des tables localité, saison et de la table de jonction. Dans le formulaire, les différents champs prennent bien les valeurs associées au membre en cours d'affichage.
    Je peux également introduire une nouvelle fiche avec une nouvelle localité et une nouvelle saison, mais je ne peux pas introduire de valeur dans la table de jonction au travers du formulaire. J'aimerais pourtant pouvoir éditer tous les champs.

    Je viens aussi de comprendre que mon formulaire est en réalité basé d'office sur une requête (même si je ne passe pas par une requête pour le construire) et que je peux modifier le type de jointure dans la requête associée au formulaire. Je suis juste un peu étonné du fait qu'access me permet d'établir des relations avec jointures par défaut différentes du type de jointures employées dans les requêtes. Je présume que la portée des jointures définies dans une requête ne concerne que la requête en elle même, mais quelle est la portée des jointures définies sous l'onget "outils de base de données -> relation"?

    Merci.

  11. #11
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour,
    Pour la table de jonction et les informations T_saison je crois qu'un sous formulaire en mode continu serait l'outil que tu recherche.

    Pour les relations "outils de base de données -> relation" ce sont des relations au niveau des tables. J'ai déjà vu un excellent tutoriel ici. Mais rapidement, ces relations vont déterminer le comportement de saisi. Si tu mets en relation la table T_membre avec T_localité et que tu spécifie de respecter l'intégrité référentiel il deviendra impossible d'affecter une localité qui n'existe pas à un membre.

  12. #12
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour,
    J'ai mis un exemple sur cette discussion, peut-être une piste pour toi...
    http://www.developpez.net/forums/d13...les-relations/

  13. #13
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    OK, merci.
    Je vais regarder tout ca dans les jours à venir.
    Je te tiens au courant de mes progrès dés que possible.

  14. #14
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Au final, je suis parvenu au résultat voulu.
    J'ai finalement utilisé des sous-formulaire en mode continu dans le formulaire principal.
    Il est alors aisé de déterminer la relation entre sous-formulaire et formulaire principal à l'aide des propriétés champs fils et champ père du formulaire principal.
    Du même coup, j'ai pu simplifier la requête attachée au champs source de mon formulaire principal en une simple requête sur les champs du formulaire principal avec tri sur les champs voulus -> exit les relations entre tables au sein de la requête du formulaire.
    J'ai ensuite juste eu à corriger les jointures des relations entre les différentes tables tout en activant l'intégrité référentielle lorsque nécessaire et le tout s'est mis à fonctionner correctement.

    Merci pour votre aide qui m'a donné les différentes pistes à analyser.

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

Discussions similaires

  1. [AC-2013] Saisie information formulaire, Table de jonction
    Par boroti dans le forum Modélisation
    Réponses: 3
    Dernier message: 03/05/2015, 14h19
  2. [AC-2007] table de jonction et formulaire
    Par coye dans le forum Modélisation
    Réponses: 5
    Dernier message: 14/10/2010, 10h27
  3. Réponses: 11
    Dernier message: 17/03/2006, 13h20
  4. Réponses: 2
    Dernier message: 15/06/2005, 17h32
  5. Table de jonction , relation n:n
    Par Equus dans le forum SQL
    Réponses: 7
    Dernier message: 04/10/2004, 18h11

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