Champ dépendant d'autres champs de la table et d'une autre table

[Résolu/Fermé]
Signaler
Messages postés
76
Date d'inscription
jeudi 9 mai 2013
Statut
Membre
Dernière intervention
11 février 2017
-
 Tessel75 -
Bonjour,
Cela fait quelques jours que j'ai ce problème et que je cherche sur google des solutions qui, jusqu'à maintenant, ne m'ont pas aidées...
Voila mon problème :
Je dispose d'une table T_infos qui regroupe les informations à propos de personnes (nom, prénom, age, adresse...).
Dans une autre table T_table2 je voudrai qu'en écrivant le nom de la personne, son prénom (ou age ou adresse...) s'affiche automatiquement dans le champ d'à coté.
Comment faire ? Si possible avec le moins de code possible.
Par avance merci

15 réponses

Bonjour,
Tu écris:
"Je dispose d'une table T_infos qui regroupe les informations....
Dans une autre table T_table2 je voudrai
"

Tel que tu le dis, il semble que tu fasses fausse route. Par définition, une base de données est faite pour économiser la quantité d'informations enregistrées, tu dois donc faire en sorte que les informations ne soient pas enregistrées 2 fois, mais que celles de la table2 soient en liaison avec celles de la table1, cela au moyen de l'Identifiant de Table1 qui se recopie dans Table2.
Pour le faire, tu as 2 méthodes,
- soit au moyen d'un formulaire et d'un sous-formulaire,
- soit au moyen d'un petit code ou même d'une macro,
- ou bien encore par recopie manuelle, mais dans les 2 derniers cas tu devras avoir une requête qui sera la source de ton formulaire.
Bonne suite
Messages postés
76
Date d'inscription
jeudi 9 mai 2013
Statut
Membre
Dernière intervention
11 février 2017
23
Effectivement je veux que table2 soit en liaison avec table1 pour accéder aux données de table1 et les afficher dans table2.
J'aurais dus préciser que je suis débutant dans l'utilisation d'access. Tu me propose 3 solutions (dont 2 auxquelles j'avais pensé) mais je ne sais pas les mettre en application.
- Pour ce qui est du sous formulaire, est-ce qu'en utilisant cette méthode j'obtiendrai des nouveaux champ (prénom, age...) dans table2 ? Comment dois-je m'y prendre ?
- Pour ce qui est du code ou de la macro : que dois-je écrire et où ?
Merci

Pour faire simple, j'ai un formulaire dans lequel on peut rentrer le nom par liste déroulante. Je voudrais que lorsque celui ci est choisi, des zones de texte m'indique le prénom, l'age, l'adresse correspondants.
Alors si tu es un débutant vraiment débutant, le mieux est que tu lises un peu pour bien comprendre de quoi il retourne; tu ne perdras pas ton temps, bien au contraire. Il ne sert à rien de se précipiter.
Je te renvoie à une de mes réponses précédentes. Bon courage

http://www.commentcamarche.net/forum/affich-27751819-formation-en-base-de-donnees
Messages postés
76
Date d'inscription
jeudi 9 mai 2013
Statut
Membre
Dernière intervention
11 février 2017
23
J'ai lu les pages dont tu m'a donné le lien. Cela permet de mettre des mots sur certaines notions mais mon problème se situe surtout au niveau de l'utilisation d'Access. Comment utiliser les fonctionnalités d'Access pour faire ce que je veux ?
Merci
Je t'ai trouvé ça!!!

http://www.lamsade.dauphine.fr/~gabrel/DOCUMENTS/TransparentsBD_MI2E_L1_Par1.pdf?#zoom=81&statusbar=0&navpanes=0&messages=0
Messages postés
76
Date d'inscription
jeudi 9 mai 2013
Statut
Membre
Dernière intervention
11 février 2017
23
Cette page me parait très prometteuse. Je m'y penche :
http://www.lamsade.dauphine.fr/~gabrel/DOCUMENTS/TransparentsBD_MI2E_L1_Par1.pdf?#zoom=81&statusbar=0&navpanes=0&messages=0
Merci
Messages postés
76
Date d'inscription
jeudi 9 mai 2013
Statut
Membre
Dernière intervention
11 février 2017
23
Je pense avoir trouvé comme faire :
J'ai créé une requête. J'ai sélectionné table1 et table2.
En mode création :
- Dans la première colonne j'ai choisis la donnée (prénom, age, adresse...) de table1 qui m'intéresse. (Champ : Prénom, Table : table1)
- Dans la deuxième colonne j'ai choisis le champ "nom" dans table1 et j'ai ajouté un critère qui demande le champ "nom" dans table2. (Champ : nom, Table : table1, Critère : [table2]![nom]).
Ma requête me donne donc le prénom du nom que je demande.
Maintenant je voudrais que ce prénom soit affiché dans un champ de table2. C'est à dire que le champ "prénom" de table2 soit le même que le champ "prénom" de ma requête. Comment faire ?
Merci
Le problème est que je ne vois vraiment pas où tu veux en venir, et pourquoi faire. Si tu veux recopier une table dans l'autre ou faire apparaitre des choix successifs, parce que dans les 2 cas il existe des moyens beaucoup plus simples, soit des requête-ajout ou requête-MiseA_Jour, soit un formulaire où tu peux sélectionner successivement les données à faire apparaitre. Mais dans tous les cas, les tables ne servent pas à cela mais à stocker des données brutes.
Messages postés
76
Date d'inscription
jeudi 9 mai 2013
Statut
Membre
Dernière intervention
11 février 2017
23
Soyons clair :
J'ai des données dans table1 : nom, prénom, age, adresse, voiture
J'ai des données dans table2 : voiture, couleur, marque
Dans mon formulaire je choisis le "nom" dans une liste déroulante. Je voudrai que dans des zones de texte apparaissent les caractéristiques de la voiture.
Comment faire ?
Merci
A enfin un peu de clarté!
Il te faut un champ commun dans les 2 tables, par exemple "<ital>IdentifiantNom</ital>" dans la table1 qui soit recopié dans la table2, de sorte que tu puisses établir une liaison entre les 2 tables.
Le moyen le plus simple est le système Formulaire/sous-formulaire parce que chaque personne est susceptible d'avoir plusieurs voitures au cours du temps
Après pour la sélection, il suffira de sélectionner cet "IdentifiantNom" pour qu'au moyen d'une requête multiTables tu retrouves toutes les données qui en relation avec cet identifiant. Et cela se fera par l'intermédiaire d'un formulaire ou d'une boite de dialogue.
Messages postés
76
Date d'inscription
jeudi 9 mai 2013
Statut
Membre
Dernière intervention
11 février 2017
23
L'idée de l'identifiant est pas mal mais je dispose déjà d'un champs commun : "nom". De plus dans mon cas un conducteur n'a qu'une seule voiture mais la voiture a plusieurs conducteurs.
Suis je tout de même obligé d'utiliser un identifiant ?
Merci
C'est bien plus pratique parce qu'on est sûr de bien déterminer la personne ou les autres données qui vont avec. Si tu es certain que chaque voiture a plusieurs conducteurs mais que chaque conducteur ne conduit et ne conduira qu'une seule voiture, il te faut faire l'inverse, recopier ton IdentifiantVoiture sur la table TableNom. Il faut toujours établir les liaisons dans le sens 1àplusieurs, sinon il y a des difficultés.
Messages postés
76
Date d'inscription
jeudi 9 mai 2013
Statut
Membre
Dernière intervention
11 février 2017
23
J'ai fais un sous formulaire mais j'ai deux problèmes :
- Il ne se met pas à jour lorsque je change le nom
- Je voudrais que ce formulaire soit uniquement lisible et non éditable
Comment faire ?
Messages postés
76
Date d'inscription
jeudi 9 mai 2013
Statut
Membre
Dernière intervention
11 février 2017
23
Bonjour,
Je pense avoir trouvé la solution :
J'identifie la voiture avec un identifiant dans les 2 tables.
table1 : nom, prénom, age, adresse, voitureID_table1
table2 : voitureID_table2, couleur, marque
Dans mon formulaire, je créé une liste déroulante dépendant de "table2" avec l'assistant et à la fin je stocke la valeur de "voitureID_table"2 dans le champ "voitureID_table1".
Ainsi quand je sélectionne la voiture, ça rempli automatiquement le champ "voitureID_table1" avec l'identifiant de la voiture.
Ensuite, dans les options de la zone de texte j'écris dans "source contrôle" :
=RechDom("couleur" ; "table2" ; "[voitureID_table1] = [voitureID_table2]")

RechDom() me donnera la couleur trouvé dans "table2" de la voiture que j'ai sélectionné.
Il ne reste qu'a rafraichir automatique la zone de texte avec une petite ligne de code dans l'évenement "si modification" de ma liste de choix de voiture :
Private Sub Liste_de_choix_Dirty(Cancel As Integer)
Zone_de_texte.Requery
End Sub


Voila le travail
Merci pour les infos Tessel75
A la bonne heur;
cela dit, en principe le propre d'un sous-formulaire est que, par le jeu des champs-pères et fils, le champ-fils se remplit automatiquement lorsqu'on ajoute un enregistrement dans le sous-formulaire dépendant.
N'ayant pas la chose sous les yeux, il est difficile d'en dire plus.
bonne suite