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 :

liaison entre les tables


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut liaison entre les tables
    bONJOUR,

    j'utilise Access 2002 avec Window XP, je suis novice et j'ai un petit soucis :

    - j'ai une base de donnee qui se compose de plusieurs tables (dont la table principale est la table 'graviere',
    - chaque enregistrement de ces tables contien un champs ID (qui me permet d'identifier chaque enregistrement en vue de realiser des cartes avec un SIG), par exemple : le premier enregistrement de chaque table aura l'ID : 20061, le second enregistrement aura l'ID : 20062, etc...,
    - dans la propriete du champs ID, j'ai indique sur la ligne 'sous-feuille donnee nom' : table.graviere ; sur la ligne champs pere est indique : 'ID' et sur la ligne champs fils est indique : 'ID', car j'ai besoin que le champs ID soit le meme pour les enregistrements qui se suivent dans les differentes tables (il est saisi pour chaque enregistrement),
    - j'ai lie chaque table par le champ 'ID' en appliquant l'integrite referentielle avec la mise a jour et l'effacement en cascade,
    - afin de faciliter la saisie je souhaite utiliser plusieurs formulaires qui reprendront les champs des differentes tables,

    mon probleme est que quand je veux saisir dans les formulaires les informations, j'ai un message d'erreur qui apparait : "vous ne pouvez ajouter ou modifier un enregistrement, car l'enregistrement associe est requis dans la table 'xxxx'.
    Est-ce qu'il est possible de repeter le champs ID, dans chaque table ?

    Comment puis-je faire pour resoudre ces problemes, sans passer par de la programmation (si possible).

    Merci par avance.
    Celticval.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    Il faut que tu lie ton sous formulaire au formulaire principal.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut
    merci pour ta reponse rapide, mais ....

    mais comment je lie les formulaires entre eux ?
    En sachant qu'un formulaire peut faire appel a plusieurs tables !

    Celticval

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    quand tu inseres un sous formulaire, ca se fait tout seul, il faut juste que tu selectionnes afficher <la table> pour chaque enregistrements <de la table>
    si t as du mal a comprendre expliques les liaisons de tes tables et je te donnerai un ex.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    ou tu fais en sorte que l utilisateur remplisse en premier la table principale. De ce fait, le numéro existera donc plus de message d erreure

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut
    alors,

    effectivement quand j'insere un formulaire, ca ce fait tout seul.

    J'ai supprime les liaisons entre les tables et ca me corrige le message d'erreur : "vous ne pouvez ajouter ou modifier un enregistrement, car l'enregistrement associe est requis dans la table 'xxxx'", mais du coup, si je supprime un enregistrement dans une table, ca ne me les supprime pas dans toutes les tables (vu que mes tables ne sont plus liees!).... que faire !!!!

    Merci encore.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    tes tables doivent etre liées

    je te donne un exemple :

    tu as trois tables :
    ARTICLE (ID, libelle, Prix)
    CLIENT (ID, nom, prenom)
    ACHETER (IDArticle, IDClient)

    pour pouvoir ajouter un achat dans ta table acheter, il faut que tu es absolument un numero client existant et un numero article existant. si non tu auras le message que tu as eu avant d enlever tes relations.

    Pour supprimer un enregistrement, il faut que tu supprimer d abord l enregistrement correspondant au numero client et au numéro article avant de pouvoir supprimer dans les autres table.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut
    bonjour,

    j'ai bien compris le fait que mes tables doivent etre liees, mais alors comment puis-je faire pour que le champ 'ID' soit automatiquement rempli dans chaque table ?
    Je crois qu'il y a quelque chose qui m'echappe completement !

    Merci beaucoup.

    Celticval

    PS : est-ce que je peux te passer un exemple de ma base (elle fait 800 ko) ?

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    oui donnes l'architecture de ta base.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut
    bon en esperant que ca marche et que c'est bien ce que tu appelles l'architecture de ma base.

    [img=http://img384.imageshack.us/img384/5294/sanstitre11uz.th.jpg]


    Merci.

    Celticval

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    elle est fausse car

    imagines, tu rempli ta table chute
    1 aaa
    2 bbb
    tu as donc 2 enregistrements dans ta table

    tu veux faire ton premier enregistrement dans la gravière.
    il porte donc le numéro 1.
    tu saisis tes informations (date, temps, heure,...) ok pas de problème.
    Cet enregistrement sera associé a l'enregistrement 1 (aaa) de ta table chute.

    Si tu veux associer ce premier enregistrement a l enregistrement 2 (bbb), tu fais comment?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut
    alors justement,

    l'enregistrement 1 de la table 'chute', correspondra a l'enregistrement 1 de la table 'graviere' et a l'enregistrement 1 de toutes les tables. C'est pour cela que je pensais qu'en liant les tables (avec le champs 'ID') de cette maniere, l'enregistement 1 de la table 'chute' (par exemple) correspondrait a l'enregistrement de la table 'graviere' et ainsi de suite.

    En fait, j'ai plusieurs tables, pour pouvoir utiliser plus correctement sun SIG, mais en fait c'est comme si je voulais avoir une seule table avec tous les champs (mais dans ce cas la ca me ferait une table trop grande et trop complexe pour m'y retrouver).

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    Donc
    il faut que tu mettes NumChute dans ta table gravière ainsi les numéro des autres tables aussi dans la table gravière.
    Tu repères ton enregistrements seulement avec l ID de ta table gravière.
    ca fonctionnera beaucoup mieux tu verras mieux.

    Imagines autre chose.
    Si tu as 2 enregistrements de la table gravière qui seront associé à bbb dans la table Chute (enregistrement 2). ca plante.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut
    Citation Envoyé par tamerlan
    Donc
    il faut que tu mettes NumChute dans ta table gravière ainsi les numéro des autres tables aussi dans la table gravière.
    Tu repères ton enregistrements seulement avec l ID de ta table gravière.
    ca fonctionnera beaucoup mieux tu verras mieux.
    Dans ce cas la, je laisse ID uniquement dans la table graviere et je recupere les champs Numxxx de toutes les autres tables dans le table graviere, mais comment est-ce que je lie mes tables ? Comme ce que tu as vu ou d'une autre maniere ?

    Imagines autre chose.
    Si tu as 2 enregistrements de la table gravière qui seront associé à bbb dans la table Chute (enregistrement 2). ca plante.
    2 enregistrements ne pourront pas etre associes dans les tables, car les informations du 1er enregistrement correspond au 1er enregistrement de la table chute, etc..., c'est pour cela que je voulais lier les tables avec le champs ID pour qu'il soit identique dans chaque table.
    Merci pour ta rapidite.

  15. #15
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    Donc, comme tu fais comme tu dis.

    Dans la table Graviere tu mets ID en clé primaire ainsi que les NumXXX des autres table. tout ces numéros doivent etre en cle primaire.

    Pour ces autres tables, tu mets un identifiants (peu improte : je te conseil de mettre numéro automatique).

    De cette facon, tu pourras relier chaque identifiants avec le numéro correspondant dans la table graviere.

    bonne chance

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    tu es relies avec l integralite comme tu as fait.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut
    Merci beaucoup pour tes reponses rapides, je teste rapidement.
    Je pense que c'est la bonne solution.

    A bientot.

    Celticval

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Par défaut
    Bonjour,

    je profite de ce post pour poser une question supplémentaire...
    (j'ai les mêmes pb)

    si j'ai bien compris, on met id en clef primaire dans table gravière puis on y met aussi les id des autres tables. Dans la table gravière, on a donc :
    Table : Gravière
    id (clef primaire)
    idtableannexe1
    idtableannexe2...

    liée aux autres tables par id ?

    et dans les autre tables, j'aurai :
    idtableannexe1 (clef primaire)
    id_gravière

    ?

    relations entre les tables gravière et table annexe par id ?

    merci

  19. #19
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    Dans la table gravière, on a donc :
    Table : Gravière
    id (clef primaire)
    idtableannexe1
    idtableannexe2...

    liée aux autres tables par id ?

    et dans les autre tables, j'aurai :
    idtableannexe1 (clef primaire)
    id_gravière
    oui c est exact. dans la table graviere, toute les id sont des clefs primaires.

  20. #20
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    remarque : il faut aussi savoir les ocnditions.
    par exemple, est ce que un enregistrement dans la table graviere peut avoir 1 ou plusieurs type de chute.
    Si c est 1 seul alors il suffit de mettre la cle primaire dans la table graviere.
    Si il peut y en avoir plusieurs, il faut, dans ce cas, créer une nouvelle table ou on mettra 2 champs en clé primaire : IDGraviere et IDChutte.

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

Discussions similaires

  1. problème liaison entre les tables
    Par PC81 dans le forum Langage SQL
    Réponses: 18
    Dernier message: 07/05/2008, 09h20
  2. [1.0.2][Zend_db_table] Gérer les liaisons entre les tables
    Par Baptiste Wicht dans le forum Zend_Db
    Réponses: 8
    Dernier message: 05/10/2007, 09h00
  3. Réponses: 5
    Dernier message: 25/04/2007, 11h34
  4. [cr 9] Problème sur un état, groupement et liaisons entre les tables
    Par Maltus dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 15/09/2006, 09h45
  5. Liaisons entre les tables.
    Par ox@na dans le forum Requêtes
    Réponses: 3
    Dernier message: 01/08/2006, 18h38

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