[MS ACCESS] - Liste déroulante

- Liste déroulante [MS ACCESS] - Logiciels - Windows & Software

Marsh Posté le 15-03-2007 à 00:12:51    

Bonjour,
J'ai besoin de l'aide d'un expert en Acces. voilà, j'ai une table de ce type là.
Table :
a      1
a      2
b      3
b      4
 
J'aimerais sur une autre table, ajouter deux listes déroulante, le choix de la liste déroulante 2 dépendant d ela liste déroulante 1.
Liste déroulante 1 : si "a", alors Liste déroulante 2 : "1" ou "2"
Liste déroulante 1 : si "b", alors Liste déroulante 2 : "3" ou "4"
 
Je suis newbie sur Access. quelqu'un pourrait-il me dépanner?
Merci d'avance.
Alain

Reply

Marsh Posté le 15-03-2007 à 00:12:51   

Reply

Marsh Posté le 15-03-2007 à 11:27:40    

Tu passes par une requete en source de ta liste deroulante 2, et tu restreind la premiere colonne a la valeur de la liste deroulante 1.
 
Si tu veux, envoies ta base, je te montre.
 
Cordialement.

Reply

Marsh Posté le 16-03-2007 à 23:52:38    

Merci pour ton aide.
Voici le lien de ma base exemple http://youalain.free.fr/bd1.mdb
En fait, j'aimerais créer un formulaire, dans lequel le choix de la liste déroulante 2 va dépendre de la liste déroulante 1.
par exemple, dans ma base, dans la première liste déroulante, j'aurais le choix entre HP, IBM ou Hitachi.
Puis en fonction du choix de la première liste déroulante, va découler les résultats. si par exemple je choisis IBM, j'aimerais bien que la 2ème liste déroulante affiche Ecran ou Serveur.
J'espères que j'ai pas été trop brouillon dans mes explications.
Merci et a+
Alain

Reply

Marsh Posté le 17-03-2007 à 16:42:49    

Ok j'ai regardé vite fait. Mais a mon avis il te manque quelques bases. En effet, tu as des informations redondantes. Lorsque tu vas saisir des produits tu vas etre obligé a chaque fois de bien saisir HP par exemple, ce qui est tout sauf pratique. Alors que si tu avais une table "produits" (referencant tes produits serveur etc.) et une table "fournisseurs" (referencant tes fournisseurs tels qu'HP IBM etc.) ca serait plus simple, car si tu fais une erreur sur le nom Hitachi lors de la saisie en mettant Hitashi par exemple et bien ta liste sera faussée (juste en fonction des données saisies, mais fausse en fonction de ce que tu attends).
 
Je t'ai fait deux exemple, un avec ta table unique comme tu le souhaitais, un avec trois tables distinctes comme cela doit se faire.
Une table Fournisseurs contenant tes fournisseurs, et donc IBM par ex ne sera saisi et n'existera qu'une seule fois.  
Une table Produits avec tes produits, et donc Serveur ou disque dur ne seront saisis et n'existeront qu'une seule fois.  
Une table "associative" entre les deux tables qui permet d'associer un fournisseur a un produit ou vice-versa avec une date d'affectation.
Ce qui fait que quand tu vas associer un disque dur à IBM et a Hitachi et bien dans ta base de donnée "disque dur" n'aura été saisi qu'une fois, au lieu de deux pour deux fournisseurs differents.
 
Le formulaire1 repond a ta question avec tes données.
 
Les "sous formulaire" SF_... te permetent de saisir a la chaine tes produits et tes fournisseurs, et sont aussi dans le formulaire2 en tant que sous formulaire. Ce qui fait que lorsque tu vas créer une association produit/fournisseur et qu'un des deux n'existent pas, tu peux les saisir directement en dessous.
Le formulaire2 te permet de saisir tes fournisseurs, tes produits, ainsi que de les associer.
Le formulaire3 repond a ta question mais en fonction des trois tables que j'ai créées.
 
J'ai repris exactement les memes données que toi :  
Fournisseur Type de produit
HP Disque dur
HP Serveur
IBM Ecran
IBM Serveur
Hitachi Disque dur
 
Sauf que moi je n'ai saisi "IBM" "Hitachi" "Disque dur" etc. qu'une seule fois. Tu peux verifier dans les tables "Produits" ou "Fournisseurs", je n'ai qu'une fois "IBM" ou qu'une fois "Disque dur"
Quand tu regarderas le formulaire2 tu verras que j'ai bien aussi 5 enregistrements tout comme toi.
 
Si tu as besoin de precision n'hesite pas, ce n'est pas une chose aisée que de se lancer dans les bases de données et ce, meme avec Access qui semble simpliste.
 
Telechargement ici
 
Cordialement.
 
 
[Edit]
 
J'ai modifié ma table associative pour que tu puisses directement lier des infos dans la table. Si tu l'ouvres tu verras qu'il y a des pioches.
Cela revient au meme que le formulaire2, sans la possibilité de saisir de nouvelles données telles que les fournisseurs ou produits.
Cordialement.
 
[/edit]


Message édité par SuppotDeSaTante le 17-03-2007 à 17:00:38

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 18-03-2007 à 17:59:18    

Merci pour ton fichier. cela m'a permis de comprendre que je partais d'une mauvaise base (sans mauvais jeu de mots).
J'ai bien compris qu'il fallait créer 3 bases, une base produit, une base fournisseur et une base association.
Donc logiquement dans cette base là, pour remplir les bases produits et fournisseurs, j'utilise les deux SF que tu m'as crée. par contre, comment dois-je faire pour les associations? dois-je utiliser ton formulaire 2?  
Et comment as-tu fais le formulaire 3? car je n'arrive pas à comprendre ta manip.
merci.
cordialement,
 
Alain


Message édité par nihao le 18-03-2007 à 18:23:35
Reply

Marsh Posté le 18-03-2007 à 19:16:36    

Oui dans le cas d'associer les produits au fournisseurs, le formulaire2 le permet, et si dans l'eventualité au moment ou tu vas creer une association tu te rends compte qu'il manque un produit ou un fournisseur, tu peux le crééer directement en dessous, et ensuite créer ton association.
En fait tu utilises le formulaire2 non seulement pour créer tes nouveaux produits/fournisseur mais pour aussi créer tes associations.
 
Le formulaire3 a simplement deux liste déroulante. Regarde les sources de données des deux zones de liste déroulantes. Tu verras que dans la source de la 2nde liste je ne prend que les valeur dont le N°fournisseur est egal a celui pioché dans la 1ere liste.
 
pour mieux comprendre Click ici
 
Cordialement


Message édité par SuppotDeSaTante le 18-03-2007 à 19:26:33

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 20-03-2007 à 20:20:45    

Merci pour tes explications.
 
J'essaie de refaire plus ou moins ce que tu as fait mais de manières différentes. Je t'explique :
J'ai maintenant 4 tables :
- une table fournisseur
- une table produit
- une table qui va associer un fournisseur à un produit (x fournisseur vend y et z produits par exemple)
- une nouvelle table qui sera là pour gérer les entrées fournisseurs (par exemple, à telle date, à telle heure...je vais sélectionner un fournisseur, SES produits dans une nouvelle liste de choix -> et je suis bloqué à ce niveau là. je ne pense pas qu'il s'agisse de la même manip que dans les formulaires.Pour moi, il faut faire une requête qui va appeler tous les produits disponibles pour x fournisseur). J'aimerais également concatener (dans le champ code interne) le code fournisseur, suivi de la date (jjmm) et le code produit. J'avais trouvé des solutions sur internet mais je n'arrive pas à les appliquer. c'est du genre : "=[Code fournisseur] " " [Date] " " [Code produit]"
 
Pourrais-tu me dépanner?
Merci d'avance.
Alain
http://youalain.free.fr/BDD%20Alain.mdb

Message cité 1 fois
Message édité par nihao le 20-03-2007 à 20:25:24
Reply

Marsh Posté le 20-03-2007 à 21:23:50    

Bonsoir
 
- Alors pour moi, ta table "entrée mp" ne sert a rien. En effet elle reprend l'association de la table "association..." ou de l'ancienne base la table "Produits/Fournisseurs"
Si tu ajoutes tes champs [Date] et [codeinterne] a la table "Association..." cela revient au meme...
 
- Ensuite tu crées tes liens sur du texte, c'est plus rapide pour le moteur ,pour trouver les enregistrements liés dans des tables connexes, de faire les liens sur du numérique, qui plus est, les n° dans tes tables Fournisseurs et Produits se numérotent automatiquement, donc toi tu n'as rien a gerer...
 

nihao a écrit :

(par exemple, à telle date, à telle heure...je vais sélectionner un fournisseur, SES produits dans une nouvelle liste de choix -> et je suis bloqué à ce niveau là. je ne pense pas qu'il s'agisse de la même manip que dans les formulaires.Pour moi, il faut faire une requête qui va appeler tous les produits disponibles pour x fournisseur).


ca j'ai pas compris... Ou alors j'ai viré ta table sans comprendre ce que tu voulais, si tel est le cas, dsl...
 
- Pour mettre a jour le [codeinterne] il faut passer par les macros ou par VB. Si tu ne connais rien en VB (Visual Basic) passes par les macros, c'est presque enfantin... J'ai modifié ton formulaire "Association" vu que j'ai viré une table (celle qui ne servait a rien) et comme j'ai remplacé dans la table associative le texte par du numérique, j'ai aussi refais les pioches pour que soient stockés les N° dans la table associative.  
Ensuite il faut recuperer le code fournisseur et le code produit qui finalement sont dans les pioches dans la 3eme colonne. Pour se faire regarde ce qu'il y a dans les zones bleues.
Regardes aussi dans les propriétés des pioches sur les evenements, tu auras une macro qui met a jour d'abord ta date (vu que tu t'en sers pour concatener) puis elle met a jour ton [codeinterne]
 
Je t'ai fait des annotations en rouge pour aller voir les propriétés sur certains points.
 
ICI
 
Cordialement
 
[edit]
N'hesites pas a critiquer si tu as des opinions differentes des miennes sur les modifs que j'apporte
 
Cordialement
[/edit]

Message cité 1 fois
Message édité par SuppotDeSaTante le 20-03-2007 à 21:39:01

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 20-03-2007 à 22:14:57    

SuppotDeSaTante a écrit :

Bonsoir
 
- Alors pour moi, ta table "entrée mp" ne sert a rien. En effet elle reprend l'association de la table "association..." ou de l'ancienne base la table "Produits/Fournisseurs"
Si tu ajoutes tes champs [Date] et [codeinterne] a la table "Association..." cela revient au meme...
 
- Ensuite tu crées tes liens sur du texte, c'est plus rapide pour le moteur ,pour trouver les enregistrements liés dans des tables connexes, de faire les liens sur du numérique, qui plus est, les n° dans tes tables Fournisseurs et Produits se numérotent automatiquement, donc toi tu n'as rien a gerer...
 
 
ca j'ai pas compris... Ou alors j'ai viré ta table sans comprendre ce que tu voulais, si tel est le cas, dsl...
 
- Pour mettre a jour le [codeinterne] il faut passer par les macros ou par VB. Si tu ne connais rien en VB (Visual Basic) passes par les macros, c'est presque enfantin... J'ai modifié ton formulaire "Association" vu que j'ai viré une table (celle qui ne servait a rien) et comme j'ai remplacé dans la table associative le texte par du numérique, j'ai aussi refais les pioches pour que soient stockés les N° dans la table associative.  
Ensuite il faut recuperer le code fournisseur et le code produit qui finalement sont dans les pioches dans la 3eme colonne. Pour se faire regarde ce qu'il y a dans les zones bleues.
Regardes aussi dans les propriétés des pioches sur les evenements, tu auras une macro qui met a jour d'abord ta date (vu que tu t'en sers pour concatener) puis elle met a jour ton [codeinterne]
 
Je t'ai fait des annotations en rouge pour aller voir les propriétés sur certains points.
 
ICI
 
Cordialement
 
[edit]
N'hesites pas a critiquer si tu as des opinions differentes des miennes sur les modifs que j'apporte
 
Cordialement
[/edit]


Bonsoir,
en fait la table entrée mp a son utilité car elle n'a pas la même fonction que la table association.
La table association a pour but de définir les relations entre produit et fournisseur pour les listes déroulantes. Et la table entrée mp sert à rentrée de manière quotidienne des informations sur les entrées de mp avec date d'entrée plus attribution d'un code. il faut également qu'il reste une trace de ces informations saisies quotidiennement. je ne sais pas si je me suis bien exprimé et si tu as tout compris!
Par contre, je n'ai pas compris comment tu as fait ta concaténation. en fait j'aimerais concaténer le code fournisseur, suivi des jours et mois, avec derrière le code produit. mais même avec tes indices (utiliser les macros), je suis incapable de le faire. je suis une vraie quiche en informatique (enfin en développement...).
cordialement,
 
alain


Message édité par nihao le 20-03-2007 à 22:37:44
Reply

Marsh Posté le 21-03-2007 à 00:34:02    

Lol, t'es pas une quiche, on ne peut pas inventer la poudre du jour au lendemain...
 
En fait sur tous les controles (formulaire, zone de lites etc.) il y a des evenements. Sur ces evenements tu vas faire une action.
Si tu regardes ta seconde zones de listes (celle des produit) tu verras que sur l'evenement "Apres MAJ" donc apres mise a jour il y a le nom de la macro a effectuer "Apres_MAJ_Pioches.Apres_Maj_Pioches"
En gros ca veut dire qu'a chaque fois que tu changes la valeur de la pioche des produits il execute la macro "Apres_MAJ_Pioches.Apres_Maj_Pioches"
Ensuite dans la macro qui se nomme "Apres_MAJ_Pioches" il y a une sous macro qui se nomme "Apres_Maj_Pioches", ce qui evite d'avoir 75000 macros dans la base, mais plutot des sous macros, on peut appeler ca des fonctions a la limite. Donc pour appeler cette fonction apres le changement de valeur de la pioche on met "Apres_MAJ_Pioches.Apres_Maj_Pioches". Il va voir dans la macro ""Apres_MAJ_Pioches" et execute la fonction a l'interieur qui se nomme "Apres_Maj_Pioches"
Pour se faire va sur l'onglet Macro de ta base, click sur le bouton modifier apres avoir séléctionné la macro ""Apres_Maj_Pioches"
Une fois dedans vas dans le menu affichage et click sur "Nom de macro" et "condition"
(J'ai foiré j'ai donné le meme nom a l'objet dans la base et a la fonction et ca te perturbe ce que je peux comprendre dsl)
Une fois la macro ouverte a l'interieur tu as deux "DéfinirValeur". Comme son nom l'indique tu vas definir une valeur a un controle.
 
Le 1er :  
Element : [Formulaires]![Association fournisseur/produit]![Date] <(-- controle qui se nomme "Date" dans le formulaire "Association fournisseur/produit"  
Expression : Date()
Le controle qui se nomme Date dans le formulaire "Association fournisseur/produit" va prendre la valeur "Date()"
En gros tu vas mettre la date du jour systeme (celle de ton ordi) dans le controle nommé Date sur ton formulaire.
 
Le 2nd :
Element : [Formulaires]![Association fournisseur/produit]![Code interne] f<(-- controle qui se nomme "Code interne" dans le formulaire "Association fournisseur/produit"  
Expression : [Formulaires]![Association fournisseur/produit]![NomFournisseurCol3] & [Formulaires]![Association fournisseur/produit]![Date] & [Formulaires]![Association fournisseur/produit]![NomProduitCol3]
Donc le controle nommé "Code interne" de ton formulaire "Association fournisseur/produit" va prendre la valeur expression qui est :
 
[Formulaires]![Association fournisseur/produit]![NomFournisseurCol3] & [Formulaires]![Association fournisseur/produit]![Date] & [Formulaires]![Association fournisseur/produit]![NomProduitCol3]
Le symbole & sert a concatener. si je prends dans l'ordre je concatene les elements suivant :  
[Formulaires]![Association fournisseur/produit]![NomFournisseurCol3] <(--- la valeur du champ nommé "NomFournisseurCol3" du formulaire "Association fournisseur/produit"
& <(--- concatener
[Formulaires]![Association fournisseur/produit]![Date] <(--- la valeur du champ nommé "Date" du formulaire "Association fournisseur/produit"
& <(--- concatener
[Formulaires]![Association fournisseur/produit]![NomProduitCol3] <(--- la valeur du champ nommé "NomProduitCol3" du formulaire "Association fournisseur/produit"
 
J'espere etre clair, c'est pas evident a expliquer
 
Cordialement


Message édité par SuppotDeSaTante le 21-03-2007 à 00:36:37

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 21-03-2007 à 00:34:02   

Reply

Marsh Posté le 21-03-2007 à 18:41:53    

Bon je laisse tomber mon projet.
Ce que je veux faire m'est impossible vu mon niveau de connaissance sous Access.
Je vais faire travailler mon frère!!! :p. Il connaît assez bien SQL :D
Merci encore pour ton aide et désolé de t'avoir dérangé pour rien.
Cordialement,
 
Alain

Reply

Marsh Posté le 21-03-2007 à 19:54:24    

Faut pas abandonner si facilement :p
 
Ca reste simple tout de meme... Ca fait barbare qd tu lis, mais si tu regardes la base d'exemple, certes il y en a un peu de partout, mais ca reste assez simple...

Reply

Marsh Posté le 22-03-2007 à 11:36:24    

Oui mais je n'ai aucune notion sur Access...enfin je n'ai que les bases...
Ce que je veux faire est un peu plus compliqué. Mais mon frère a l'air de s'éclater...donc je le fais bosser!!! C'est toujours plus agréable de donner des ordres! :)

Reply

Marsh Posté le 14-03-2008 à 03:54:32    

Bonjour,
j'ai moi aussi un problème:
dans une tables il y a mes différentes taches réalisées (qualité ou pathologie)
dans une autre tables il y a les par exemple, les détail sur une taches qui concerne la qualité.
Je voudrai associé le numéro de l'analyse qualité effectuée dans le code ref de la table des taches. je n'arrive pas même en lisant vaut conseil...
pouvez vous me venir en aide?
merci

Reply

Marsh Posté le 14-03-2008 à 04:13:24    

Reply

Marsh Posté le 14-03-2008 à 12:01:14    

Bonjour
 
Marche pas ton lien.
 
Mais si j'ai bien compris, tu n'as qu'a lier tes deux tables... Et/ou faire une requete qui joint les deux...
 
Cordialement


---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed