![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| Conception Le forum qui vous aide à résoudre vos questions relatives à la modélisation de votre base de données sous Access. |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Invité de passage
![]() |
Bonjour,
Débutant sur access, j'ai en charge de passer l'ancienne BDD de mon taff de works à access. Après et malgré plusieurs lectures et relectures des pages concernées, je n'arrive toujours pas à créer via access mes clefs étrangères: J'ai une première table (élèves) avec une clé primaire incrémenté comprenant les caractéristiques de chaque enregistrements. J'ai une seconde table (adresses) avec les adresses de ces derniers, où j'ai créé une autre clef primaire. Mon problème est que je souhaite créer une clef étrangère dans cette table, adresse, qui correspondrait à ma première clef primaire (table client).Cependant je suis incapable de la réaliser. Enfin, j'ai un formulaire qui fonctionne bien avec ma table client mais pas avec ma table adresse. Lors de l'enregistrement d'un nouvel élève, ma table élève est bien à jour, mais pas ma table adresse. Comment faire? Dois-je reprendre la clef primaire de ma table adresse afin de l'insérer dans mon formulaire où dois-je intégrer un sous formulaire? Bref, je suis complètement perdu et dois être opérationnel lundi prochain... Merci pour toute l'aide que vous pourriez m'apporter. |
|
|
|
|
|
#2 (permalink) |
|
Membre Expert
![]() Date d'inscription: août 2007
Localisation: Abidjan - Côte d'Ivoire
Messages: 1 029
|
Bonjour et bienvenue sur le forum.
A bien lire ton problème, je pense que la table Adresses est liée à la table Eleves dans une relation un à plusieurs, ce qui se traduit par le fait qu'un élève peut avoir plusieurs adresses. Est ce le cas? Si oui, je pense que tu dois mettre dans ta table Adresses, un nouveau champ de type numerique, qui ne sera rien d'autre que la clé secondaire qui lie Adresses à Eleves. De là, la suite devient simple
__________________
Un gros problème est la somme de plusieurs petits problèmes. Resolvez chacun des petits problèmes: vous aurez resolu le gros problème!
|
|
|
|
|
|
#3 (permalink) |
|
Invité de passage
![]() |
Tu as parfaitement cerné mon problème.
J'ai beau regarder sur les divers topic, livres sur access (Foucher, pour les nuls...) Je ne parviens pas à créer cette clef secondaire. apparemment on ajout une # ou quelle est l'opération à faire. Merci |
|
|
|
|
|
#4 (permalink) |
![]() |
Le principe général, à adapter à ton cas particulier :
En français : - Un élève peut avoir de 1 à plusieurs adresses. - Une adresse appartient à 1et 1 seul élève. En MCD (modèle conceptuel de données, de la méthode Merise) : Eleves -1,n----Avoir----1,1- Adresses Ce qui donne les tables : Eleves(ElId, ElNom, ElPrenom, ...) Adresses(AdrId, Adr_FK_IdEleve, AdrRue, AdrVille, AdrCodePostal, ...) FK veut dire clé étrangère (Foreign Key in english) et contient l'identificateur de l'élève auquel appartient l'adresse, c'est à dire un numéro existant déjà dans la colonne ElId de la table Eleves. Pourquoi, dans ton premier message, mélanges-tu les notions d'élève et de client ?
__________________
Philippe Leménager. Futur ingénieur CNAM, en CDD à l'INRA Toulouse jusqu'au 31/12 suite au stage effectué. Je reste ouvert aux propositions d'emploi. |
|
|
|
|
|
#5 (permalink) |
|
Invité de passage
![]() |
Pour info, à l'heure actuelle j'ai créé un nouveau champ dans adresses. J'ai copié dans mode création ma clef primaire, l'ai collé dans adresse en modifiant le format (numauto en numérique) et ajout de # devant Code élève.
Par contre je n'ai pas d'ajout des nouveaux enregistrement sur ma table adresses alors que je l'ai sur la table élève. Donc j'en déduis que mon lien n'est pas bon (j'ai coché l'intégrité référentielle et la mise à jour des champs correspondant) Dois je m'orienter vers une cardinalité de plusieurs à plusieurs? |
|
|
|
|
|
#7 (permalink) |
|
Invité de passage
![]() |
Ben je savais pas comment présenté mon cas donc au départ j'avais pris le cas client.
Puis j'ai changé d'avis mais n'ai pas tout corrigé. Par contre Philippe, je n'ai toujours pas compris comment je créer ce lien depuis ma clef secondaire (table adresse) |
|
|
|
|
|
#8 (permalink) |
![]() |
Quand tu crées la table adresses en ajoutant la clé étrangère, tu ne fais que créer les colonnes de ta table mais la table est vide. Elle ne se remplit pas toute seule !
Pour avoir la correspondance entre les deux tables, c'est à dire le numéro d'un élève qui apparaît dans la colonne clé étrangère de la table adresses, il faut : - soit tout saisir à la main, - soit utiliser les formulaires et sous-formulaires. Un coup d'oeil aux tutoriels t'apporterait une grande aide je pense.
__________________
Philippe Leménager. Futur ingénieur CNAM, en CDD à l'INRA Toulouse jusqu'au 31/12 suite au stage effectué. Je reste ouvert aux propositions d'emploi. |
|
|
|
|
|
#9 (permalink) |
|
Invité de passage
![]() |
Effectivement, les connaissances me manquent énormément. Autant avec un pied de vigne je te produit du vin, autant en informatique je suis une bille...
Aussi quant on créé une clef secondaire dans la table adresse (1 côté élève et n côté adresse) et que l'on applique l'intégrité référentielle, je pensais que l'ajout d'un enregistrement dans la table élève, le répercutait automatiquement dans ma table adresse. Comme tu le soulignes je vais reprendre les tutoriels. Par contre peux-tu me confirmer que la création d'un champ vide dans la table adresse, auquel j'ai collé les infos de la clef primaire de la table élève (en m'assurant qu'elles correspondent) avec la mise en lien comme défini précédemment suffit, on est-ce un bricolage néfaste? Merci à vous tous et sûrement à bientôt après avoir repris les tutos!!! |
|
|
|
|
|
#10 (permalink) | |
![]() |
Citation:
Si oui alors ajoute le champ de clé étrangère mais n'applique pas l'intégrité référentielle ; Access ne voudra pas puisque tu as plein de lignes qui ne sont pas encore reliées à la table 'Eleves'. Ensuite construit un formulaire Adresses avec une liste déroulante pour choisir l'élève à qui appartient l'adresse. Voir les tutoriels pour apprendre à le faire. Et là, miracle, la colonne de clé étrangère se renseigne toute seule à chaque fois que tu choisis un élève ! ![]() Quand tu as fait le lien entre toutes les adresses et les élèves, applique l'intégrité référentielle pour les saisies futures.
__________________
Philippe Leménager. Futur ingénieur CNAM, en CDD à l'INRA Toulouse jusqu'au 31/12 suite au stage effectué. Je reste ouvert aux propositions d'emploi. |
|
|
|
|
|
|
#12 (permalink) |
|
Invité de passage
![]() |
Alors là j'ai beau essayer, je n'arrive toujours pas à obtenir un lien efficace entre mes 2 tables. J'ai même rentré les 319 codes de la clef étrangère manuellement, puis seulement appliquer l'intégrité référentiel, que neni!!!! Lors de nouveaux enregistrements, seuls la table élève est renseignée, pas la table adresse...Peut-on m'apporter des précisions où d'autres infos? Sincèrement |
|
|
|
|
|
#13 (permalink) | |
![]() |
La réponse que j'ai apportée par MP :
Citation:
__________________
Philippe Leménager. Futur ingénieur CNAM, en CDD à l'INRA Toulouse jusqu'au 31/12 suite au stage effectué. Je reste ouvert aux propositions d'emploi. |
|
|
|
|
![]() |
![]() |
||
Comment créer une clef étrangère sous access?
|
||
Offres d'
emploi informatique
sur Lesjeudis.com
|
| Outils de la discussion | |
|
|