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 :

Relation 1-plusieurs dans relations mais pas dans requête [AC-2007]


Sujet :

Modélisation

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 102
    Points : 64
    Points
    64
    Par défaut Relation 1-plusieurs dans relations mais pas dans requête
    Bonjour,

    dans ma base de données j'ai 2 tables que j'ai relié par une relation 1---∞.

    Le problème est que lorsque je fais appel à ces 2 tables dans une requête la relation entre les 2 table n'est plus la même!
    Elles ne sont plus reliés que par leurs clefs étrangères.

    Avez vous une idée de ce qui pourrait provoquer celà?

    Merci d'avance à ceux qui répondront car je pense que c'est celà qui me perturbe une de mes requête.

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Lyysis,

    Citation Envoyé par Lyysis
    Le problème est que lorsque je fais appel à ces 2 tables dans une requête la relation entre les 2 table n'est plus la même!
    Elles ne sont plus reliés que par leurs clefs étrangères.
    ==> pas très bien compris...

    Peux-tu :
    • poster l'image de la relation entre tes deux tables ?
    • poster l'image de ta requête avec ces deux tables en partie haute ?

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 102
    Points : 64
    Points
    64
    Par défaut
    Voici ma relation en PJ.

    Par contre je ne rencontre pas de problèmes avec mes autres relations donc je ne comprend pas bien d'où vient le problème ...
    Images attachées Images attachées  

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 102
    Points : 64
    Points
    64
    Par défaut
    Edit: le soucis c'est pas résolu en fait ... quand je referme ma requête ça redevient comme avant


    Soucis résolu ^^ le problème ne venait pas de moi mais de Access (suppression de la relation + recréation)+idem dans toutes mes requêtes et mon soucis est résolu

    Merci quand même de ton aide

  5. #5
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Lyysis,

    Je ne comprends pas bien : dans ce que tu présentes, l'image de la relation est en parfaite cohérence avec l'image de la requête.

    Mais, peut-être as-tu posté les images après résolution du problème.

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 102
    Points : 64
    Points
    64
    Par défaut
    L'image n'est pas cohérente: certes le lien se fait bien avec la clef étrangère mais le lien 1---∞ ne se fait pas.
    Normalement cette relation se retrouve dans la requête sinon ça créé des problèmes.

    J'ai essayé de supprimer donc une de mes tables dans la requête et de la remettre et la relation comme dans Relations se créé mais une fois la requête fermée si je la rouvre ça redevient une relation --- .
    Et le problème est que je met mes valeurs sous forme de liste déroulante dans ma requête mais que lorsque je le fait si je veux sélectionner une autre valeur l'ancienne est remplacée par l'Id de la nouvelle --" c'est pas vraiment pratique XD.

    Je vais essayé de faire une nouvelle base voir si celle-là plante mais j'y crois pas trop ...

    Si tu as une idée de ce qui fait ça même minime dis le moi ^^ (je pense que c'est la clef étrangère qui a un problème vis à vis d'une option ou la relation elle-même mais je trouve pas où pour le moment).

  7. #7
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Il y a une incompréhension due à une méconnaissance d'Access.

    1- Dans la fenêtre des relations, on crée des objets "Relationship"
    Ces objets ont diverses propriétés
    • Cardinalité
    • Intégrité référentielle
      • Effacement en cascade
      • Mise à jour en cascade
    Ce sont des propriété "BAS NIVEAU" qui impacteront SYSTEMATIQUEMENT le fonctionnement de la base, quoi qu'on fasse.

    2- Dans les requêtes, IL N'Y A NI CARDINALITE NI INTEGRITE REFERENTIELLE.
    Une requête n'est qu'une interrogation qui se base sur la structure des données et les différentes propriétés bas niveau des relations.
    Donc, la représentation graphique (je vois ou pas les cardinalité 1--n), on s'en fout royalement.
    Pour le comprendre, il suffit d'aller lire le SQL.
    On y trouvera une formulation du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FROM Table1 INNER JOIN Table2 ON Table1.MonChamp = Table2.MonAutreChamp
    Qui indique simplement qu'on souhaite lier les données du champ MonChamp de la table1 avec les données du champ MonAutreChamp de la Table2, et de ne récupérer que les données équivalentes de chaque côté de cette liaison (INNER JOIN)
    Où est-il question de cardinalité ?
    Où est-il question d'intégrité référentielle ?
    Nulle part.

    Donc, ton modèle lie bien un PK à une FK
    et ta requête lie deux champs (qui sont bien, en l'occurence ta PK et ta FK)
    Voilà, c'est tout.

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 102
    Points : 64
    Points
    64
    Par défaut
    Merci pour ta réponse aussi rapide et complète, ça m'a permis de vérifier pas mal de choses

    Mais alors celà m'amène à une autre question: pourquoi sous Access 2007 cette relation se fait-elle ponctuellement?
    Puisque losrqu'on regarde les relations elles peuvent apparaîtrent (cf PJ).

    Et pourquoi dans mes tables qui sont pourtant reliées de la même façon 'une d'entre elle pose des problèmes à ma requête?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT [Type de Contrôle].Type, Défaut.[Code défaut], Défaut.Libelle, Défaut.Explication
    FROM [Type de Contrôle] INNER JOIN ([Type référentiel] INNER JOIN Défaut ON [Type référentiel].Id = Défaut.[Type référentiel]) ON [Type de Contrôle].Id = Défaut.Type
    ORDER BY [Type de Contrôle].Type, Défaut.[Code défaut];
    Images attachées Images attachées  

  9. #9
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Merci Maxence, pour tes précisions.

    Lyysis, il me semble comprendre que tu confonds "1---∞" et "LEFT JOIN".

    Comme le dit Maxence :
    Citation Envoyé par Maxence
    Dans les requêtes, IL N'Y A NI CARDINALITE NI INTEGRITE REFERENTIELLE.
    Dans une requête, le "LEFT JOIN" fait apparaître une flèche à droite de la liaison entre deux tables. Si tu veux que le "LEFT JOIN" soit proposé, par défaut, à toutes tes requêtes, il suffit, dans les relations, de double-cliquer sur le lien et de choisir l'option adéquate. Perso, je ne le conseille pas car cela mélange deux notions différentes : on peut avoir besoin, parfois, de "1---∞" sans "LEFT JOIN".

    Dans ce que tu as posté :
    • dans les relations, Type de contrôle est relié à Défaut via Code défaut=Id ;
    • dans la requête, Type de contrôle est relié à Défaut via Type=Id.

    ==> il y a une incohérence. Générée par Access ?

  10. #10
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 102
    Points : 64
    Points
    64
    Par défaut
    Merci de ta réponse, plus je comprend ce que tu veux dire moins je comprend Access

    En effet il n'y a pas que dans cette requête que les relations "1---∞" se sont créées. Elles sont apparues dès l'instant où je les aient crées dans la catégorie relations.

    As tu une idée de ce qui cloche dans ma requête alors?

  11. #11
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bizarre... dans les requêtes, il n'y a jamais



    Peux-tu poster ta base (ou une partie qui présente le même symptôme) ?
    Images attachées Images attachées  

  12. #12
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 102
    Points : 64
    Points
    64
    Par défaut
    Du boulot je ne peux pas poster la base ^^ mais pour répondre à ta question j'ai différentes requêtes avec ces liens qui et il sont tous en adéquation avec les liens entre mes tables
    (c'est pour ça que je me suis dit par déduction que dans ma requête comme la relation entre 2 tables apparaissait et que ça fonctionnait et que j'avais un problème là où la relation n'apparaissait pas que cette abscence posait problème )
    et j'ai d'autres requêtes où le lien "1---∞" n'apparait pas ...
    mais qui fonctionnent quand même!

    Donc on comprendra que la logique m'echappe un peu et étant légèrement débutante en Access ça n'aide pas non plus ...

    Je posterais une partie de la base ce soir et j'espère que tu pourras m'aider car je commence à devenir un peu folle

  13. #13
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Citation Envoyé par Richard_35 Voir le message
    Bizarre... dans les requêtes, il n'y a jamais



    Peux-tu poster ta base (ou une partie qui présente le même symptôme) ?
    je ne suis pas certain d'avoir tout compris à ce post, mais...
    Dans une requête, il est tout à fait possible d'avoir les deux représentations.
    La requête peut faire apparaître les cardinalités... ou pas.

    D'ailleurs, quelque chose d'amusant à faire pour s'en convaincre, c'est ceci :

    Créer une requête portant sur deux tables qui sont jointes, avec mise en place de l'intégrité référentielle (ce qui fait appraître les cardinalités)
    ==> On voit, effectivement les cardinalités dans la requête.

    maintenant, DANS LA REQUÊTE, supprimons la relation, et refaisons la immédiatement, en glissant la Clé Primaire sur la clé Etrangère
    ==> on ne voit plus les cardinalités.

    pour terminer, enregistrons et fermons la requête, puis... revenons dessus en mode création.
    ==> les probabilités pour que vous voyiez à nouveau les cardinalités sont énormées !!!!

    Pourquoi ?
    Parce que la seule chose qui est enregistrée lorsque vous enregistrez une requête, c'est le SQL de cette dernière.
    Donc, lorsque vous passez en mode création, Access est bien obligé d'aller chercher des informations partout pour pouvoir redessiner l'interface graphique de définition d'une requête. Et, en farfouillant dans les informations de la base, il a sûrement retrouvé les cardinalités de la relation qui porte l'intégrité référentielle. Il a donc retrouvé l'information qui lui demandait d'afficher ces cardinalités.
    C'est tout

  14. #14
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 102
    Points : 64
    Points
    64
    Par défaut
    Merci pour ta réponse je comprend à présent que ma question n'était pas vraiment de cet ordre et que pour faire ce que je veux il va me falloir surement passer par une requête de mise à jour ^^.

    Désolé de vous avoir pris du temps sur une question qui n'avait pas vraiment de réponse mais au moins je ne me poserait plus la question

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

Discussions similaires

  1. Reception de mails dans OWA mais pas dans outlook
    Par spynux dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 12/05/2008, 00h25
  2. Réponses: 2
    Dernier message: 23/04/2008, 13h17
  3. Doublons affichage dans DBGrid mais pas dans ma BDD
    Par socooooool dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/07/2006, 18h16
  4. [Cookies] Problème dans IE mais pas dans FF
    Par Manio 54 dans le forum Langage
    Réponses: 19
    Dernier message: 15/12/2005, 18h30
  5. CROSSTAB ::marche dans access mais pas dans MS SQL 2000
    Par anselmeJ dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/11/2005, 07h56

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