| La réponse est: Impossible dans une requête. Désolée...
Par contre, ce que tu peux faire:
Tu crées un formulaire indépendant (que j'appelle Choix) dans le quel tu mets deux zones de liste. La première est alimentée par les noms de ta table (ChoixNom) et la deuxième par les prénoms (ChoixPrénom).
Et ta requête aura des critères du style Forms!Choix!ChoixNom
Pour faire un critère de ce genre, tu peux faire un clic droit dans la zone critères et choisir créer. Ca t'ouvre un petit assistant pas trop compliqué à comprendre... Ou tu tapes manuellement.
Si tu veux faire ça très bien:
Tu modifies la requête sur laquelle est basée la première liste en lui mettant un regroupement pour que "Dupont" n'apparaisse pas 3 fois si tu as 3 Dupont
Tu modifies la deuxième en mettant un critère pour le nom (Forms!Choix!ChoixNom) pour que tous les prénoms n'apparaissent pas, seulement ceux de tes trois Dupont
Et, cerise sur le gâteau, tu mets un p'tit coup de VB, pour que la deuxièle liste s'actualise chaque fosi que tu choisis un autre nom: Propriété après MAJ, un p'tit clic sur le bouton à trois points, générateur de code... Juste un Me!ChoixPrénom.Requery
Et bien sûr ensuite un bouton qui lance ta requête! Répondre à LatelyGeek | 9 GRoM34, le 23 mai 2008 à 17:54:43Salut LatelyGeek,
J'ai un problème similaire....
Je m'explique, j'ai dans ma base de données 3 tables :
- table zones : champs (ID zone, zone, commercial)
- table clients : champs (ID clients, nom client, département, ID zone [servant a lier la table à la table zone])
- table projets : champs (ID projet, n° projet, statut marché, type de marché, type de mode, Commercial terrain, ID client[servant a lier la table à la table clients])
En autres, mon objectif est d'avoir un formulaire "critères de choix" afin de m'afficher toutes les entrées de la base de données qui dépendent de ce/ces critères.
J'ai donc créé un formulaire indépendant "criteres", sur lequel j'ai placé des listes déroulantes :
- liste zone
- liste commercial
- liste département
- liste nom client
- liste statut marché
- liste type de marché
- liste type de mode
- liste commercial terrain
j'aimerai pouvoir sélectionner à ma guise, juste statut marché par exemple. Ou alors, sélectionner une zone et type de marché uniquement.
Je n'y arrive pas. Pour le moment je ne peux que choisir dans l'ordre, une zone, qui restreint donc le nombre de commercial, qui restreint donc le nombre de département.... et ainsi de suite en cascade....
Saurais tu m'aider?
Merci par avance de ta réponse.
Cdlt,
GRoM Répondre à GRoM34 | Tu dois expliquer à Access que si tu ne remplis pas un chmap critère, c'est que tu veux tout.
Ca donne, dans le critère de ta requête:
Comme VraiFaux(EstNull(Forms!NomFormulaire!ListeZone)"*";Forms!NomFormulaire!ListeZone)
Tu vois le principe?
Pourquoi se compliquer la vie à faire simple, quand c'est si simple de faire compliqué? Répondre à LatelyGeek | 11 GRoM34, le 23 mai 2008 à 22:14:17Merci à toi LatelyGeek,
J'ai tout de même une petite question "de précision" pour pouvoir faire des listes qui soient clean dans leur constuction....
Pourrais tu me dire / corriger les étapes de construction de mes listes pour faire quelque chose de nickel :
1/ Je créé un formulaire indépendant que je nomme "criteres"
2/ Je crée une requete "rqt zone" qui comprends
- table zones (et je sélectionne les champs : ID zone, zone, commercial)
- table client (ID client, nom, departement, ID zone)
- table projet (ID projet, N° projet, status marché, type de marché, type de mode, commercial terrain, ID client)
3/ je créé une liste déroulante "zone" sur mon formulaire "criteres" à l'aide de l'assistant
"Je veux que la liste déroulante recherche les valeurs dans une table/requete"
puis je sélectionne ma "rqt zone"
puis je sélectionne tous les champs disponibles
puis je choisis tri sur "zone" par ordre croissant
puis je mets toutes les colonnes à zéro sauf la colonne "zone"
puis je choisis le champ "zone" à stocker dans la base de données
puis je nomme cette liste "zone"
Enfin dans propriétés de ma liste, dans autres, je la nomme "zone"
4/ Je créé une requete "rqt commercial" exactement de la même manière que pour la "rqt zone"
5/ je créé une liste déroulante "commercial" exactement pareil que pour la liste "zone", sauf que l'ordre de tri, la colonne qui n'est pas à zéro et le champ à stocket, ainsi que le nom sera maintenant "commercial'.
6/ J'ouvre ma requete "rqt zone" en mode création
dans la partie critères du champ "zone", j'indique Comme VraiFaux(EstNull(Forms!criteres!zone)"*";Forms!criteres!zone)
7/ j'ouvre ma "rqt commercial" et je fais pareil avec "commercial"
8/ j'ouvre mon formulaire en mode création dans propriétés, évènnement, après MAJ, de ma liste "zone", je clique sur "..."
là j'écris :
Private Sub zone_AfterUpdate()
ICS = zone.Column(2)
Me.Refresh
End Sub
Question :
Est ce que c'est une bonne manière de créer mes listes déroulantes? requetes, ...
Comment peut tu faire un "regroupement" dans ce genre de requete? chez moi ca n'a pas l'air de marcher....
merci de ta réponse en tout cas...
GRoM Répondre à GRoM34 | Zut, c'est trop compliqué pour que je réponde ce soir.
Si tu me vois pas revenir demain, rebipe-moi, d'acc?
Pourquoi se compliquer la vie à faire simple, quand c'est si simple de faire compliqué? Répondre à LatelyGeek |
| Non, ça ne va pas, ce que tu fais.
Tu mets trop de champs dans les requêtes de tes lustes déroulantes.
La première ne doit contenir que les zones, avec un regroupement. (Elle alimente Zone)
La deuxième contient les commerciaux et les zones pour y mettre un critère faisant référence à Zone et disant
VraiFaux(EstNull(Forms!criteres!zone)"*";Forms!criteres!zone)
Sur la propriété Après MAJ de zone tu mets juste me!Commercial.Requery après avoir cliqué sur "..."
Je comprends pas ce que tu veux en faisant
ICS = zone.Column(2)
Me.Refresh
Pourquoi se compliquer la vie à faire simple, quand c'est si simple de faire compliqué? Répondre à LatelyGeek | Bonjour latelygeek
quan tu dis :
"La première ne doit contenir que les zones, avec un regroupement. (Elle alimente Zone) "
peux tu me dire comment tu fais pour faire un regroupement de la zone?
jsuis sur que c une question debile et je comprend ce que tu ve dire mais je trouve pas comment faire
merci
benoit Répondre à thelegendofben |
| Désolé c encore moi
quan je rentre le code sql ca marche pas(VraiFaux(EstNull(Forms!criteres!zone)"*";Forms!criteres!zone) )
une message box s'ouvre et me dit "caractere trouvé a la fin de l'instruction sql" en surlignant "vraifaux"
la je c pas qoi faire...
encore merci de nous aider et d'etre si doué ;-) Répondre à thelegendofben | En SQL tu dois écrire Iif et non VraiFaux.
Pour le regroupement tu rajoutes GROUP BY NomDeLaTable.NomDuChamp
Pourquoi se compliquer la vie à faire simple, quand c'est si simple de faire compliqué? Répondre à LatelyGeek | Merci bocoup pour ta rapidité
ca fait plaisir
pour le regroupement ca marche!thanks
par contre g changé le vraifaux par if donc plus de probleme avec ca mais ca me fait la meme message box avec la parenthese
voila ce que j'ai tappé:
SELECT choix_theme.theme
FROM choix_theme
If (EstNull(Forms!themes!zone)"*";Forms!themes!zone);
et ca refuse la 1ere parenthese
... Répondre à thelegendofben | J'ai mis DEUX I à Iif, c'est exprès. D'autre part, tant que tu y es, remplace EstNull par IsNull....
Pourquoi se compliquer la vie à faire simple, quand c'est si simple de faire compliqué? Répondre à LatelyGeek |
|
| Non ca marche pas non plus mais t'embette pas...je v faire autrement
merci quan meme...et surment a tres bientot lol Répondre à thelegendofben | Tu aurais pas oublié un WHERE quelque part, par hasard???
Pourquoi se compliquer la vie à faire simple, quand c'est si simple de faire compliqué? Répondre à LatelyGeek | It's possible
le truc c'est que j'y conné rien
g u une formation tres rapide du sql
et ca va ou ce where? Répondre à thelegendofben | Bon, j'avais oublié le Like, moi aussi:
SELECT choix_theme.theme, theme.zone
FROM choix_theme
WHERE (((theme.zone) Like IIf(IsNull(forms!themes!zone),"*",forms!themes!zone)));
Pourquoi se compliquer la vie à faire simple, quand c'est si simple de faire compliqué? Répondre à LatelyGeek |
|
|
|
|
|
| 23 GROM34, le 27 mai 2008 à 17:29:49Salut LatelyGeek,
Je reviens vers toi car je n'arrive toujours pas à finaliser cette base de données que je dois rendre vendredi....
J'ai fait toutes mes requetes, j'ai fait mes listes déroulantes, une fois mes "paramètres" sélectionnés, comment faire pour que ces critères s'affichent dans un formulaire en ajoutant en plus d'autres champs de ma table projet.
Je m'explique, j'ai 3 tables :
zone
client
projet
J'ai un formulaire avec des listes déroulantes permettant de sélectionner les projets que je souhaite voir afficher.
Ces listes déroulantes se mettent à jour en fonction de la liste précédente...
en bas de ce formulaire, je souhaite mettre un bouton, qui ouvre un nouveau formulaire et affiche le premier enregistrement correspondant aux critères sélectionnés (puis sur ce deuxieme formulaire je mettrai des boutons pour naviguer entre les enregistrements)...
Merci de m'aider.
GRoM Répondre à GROM34 | C'est assez simple, je pense:
Tu bases le deuxième formulaire sur une requête faisant elle même référence aux valeurs sélectionnées dans le formulaire de choix. (Critères de type forms!ChoixCritères!ChoixType)
Tu vois ce que je veux dire???
Pourquoi se compliquer la vie à faire simple, quand c'est si simple de faire compliqué? Répondre à LatelyGeek |
|
| Merci pour toutes tes infos,
je souhaiterai avoir une petite precision.... et pour ma troisième requete à ce niveau? je reprends les champs des deux premieres requetes + le champ que je dois ajouter, ou alors je ne prends que le précédent choix de champ auquel j'ajoute le nouveau?
Pour les regroupements ca marche sur ma premiere requete mais pas sur la deuxieme, troisieme, ...
Merci de ta réponse Répondre à GRoM34 | Généralement, si les regroupements "ne marchent pas", c'est qu'on affiche trop de champs.
Je m'explique.
Im aginons qu'on veut savoir comboien on a d'élèves portant le même nom de famille. Il faut mettre un regroupement sur le nom et compter n'importe quel autre champ non vide.
Si on rajoute, par exemple, leur prénom, le regroupement "ne marchera plus". C'est à dire qu'au lieu de nous indiquer combien d'élèves s'appellent Dupont, Access va nous dire qu'il y a un Dupont JEAN, un Dupont PIERRE et une Dupont MARIE, au lieu de TROIS Dupont.
Le regroupement a fonctionné, mais on a mal posé la question...
Pour le reste, ta question manque cruellement de précision;
et pour ma troisième requete à ce niveau? je reprends les champs des deux premieres requetes + le champ que je dois ajouter, ou alors je ne prends que le précédent choix de champ auquel j'ajoute le nouveau?
Quelle troisième requête, que désigne "ce niveau"?
Si j'ai compris ta question, (Ce qui n'est pas sûr du tout) je dirais que tu ne prends que le précédent choix de champ auquel tu ajoutes le nouveau, puisque le deuxième choix de champ est conditionné par le premier...
Pourquoi se compliquer la vie à faire simple, quand c'est si simple de faire compliqué? Répondre à LatelyGeek | Alors là pour le coup je ne comprends plus trop....
Imaginons que j'ai une table :
-zones (champs= zone ; commercial)
Je fais une requete zone avec uniquement le champ zone, je fais un regroupement dessus.
Je fais un formulaire avec
une liste déroulante basée sur la requete zone, bien sur le regroupement marche
je fais une deuxieme requete commercial :
il y a deux champs, le champ zone et le champ commercial
Sur mon formulaire je fais une deuxieme liste déoulante basée sur ma requete commercial
Mes listes permettent de sélectionner uniquement le commercial de cette zone. Cependant, si je ne saisis rien comme valeur dans cette liste parce que je ne veux pas selectionner ce critere au moment ou j'effectue ma recherche, comment obtenir un regroupement pour le champ commercial?
Merci... Répondre à GRoM34 | Soit c'est toi soit c'est moi, mais il y a mésentente, là. Je ne comprends plus rien du tout.
Quel est le rapport entre le choix ou non d'une valeur dans les listes et le regroupement?
Et surtout, qu'appelles tu regroupement?
A QUEL ENDROIT ne peux tu pas faire de regroupement si tu n'as pas choisi de valeur dans "cette liste" (Mais LAQUELLE? Tu viens de m'en citer deux...)
Pourquoi se compliquer la vie à faire simple, quand c'est si simple de faire compliqué? Répondre à LatelyGeek | J'ai un peu de mal avec access j'avoue :
je simplifie un peu mes données :
3 tables :
zone (champs zone ; commercial)
client (nom ; dpt ; site internet ; zone (pour lier en 1-infini avec la table zone) )
projet (numero ; chef ; montant ; date commande ; nom (pour lier en 1-infini avec la table client) )
Je veux un formulaire "criteres" ou je peux selectionner par des listes déroulantes :
liste 1 : zone
liste 2 : commercial (je ne veux pas qu'un commercial apparaisse pls fois dans la liste commercial)
liste nom : choix du nom (je ne veux pas qu'un nom apparaisse pls fois dans la liste nom)
liste dpt : choix du dpt (je ne veux pas qu'un dpt apparaisse pls fois dans la liste dpt)
liste numero : choix du numero (je ne veux pas qu'un numero apparaisse pls fois dans la liste numero)
liste chef : choix du chef (je ne veux pas qu'un numero apparaisse pls fois dans la liste chef)
Bien sur je veux que mes listes soient en "entonoir" c'est à dire que quand je selectionne une zone, toutes les listes se mettent à jour pour n'afficher que les enregistrement pouvant concorder avec cette zone.
Bien sur egalement je veux pouvoir ne pas forcement selectionner une réponse dans chaque liste
Je veux que mes choix je puisse les faire dans n'importe quel ordre (mettons une fois je vais selectionner d'abord mon critere zone puis apres un critere dpt ; et un autre jour, je vais d'abord rentrer dpt, sans penser que la seconde qui suit je veux aussi selectionner une zone, ce que je fais en deuxieme dans ce cas la (et normalement si tout cela est possible, en choississant un departement, quand je retournerai sur zone, ca ne m'afficherait qu'un seul choix...)
Par la suite, je veux cliquer sur un bouton sur ce formulaires criteres, afin qu'il m'ouvre un autre formulaire "resultats", qui lui m'afficherait toutes les valeurs de toutes les tables(soient les champs zone, commercial, nom, département, site internet, numero, chef, montant, date de commande) correspondant aux criteres de recherche.
Enfin sur ce formulaire "resultats", je veux pouvoir ajouter un nouvel enregistrement (nouvelle zone, nouveau commercial, nouveau nom, nouveau departement, nouveau site internet, nouveau numéro, nouveau chef, nouveau montant, nouvelle date de commande).
Voila, si jamais tu avais le temps de tout résumer de A à Z, afin que je puisse vraiment comprendre l'ensemble de la construction de cette base de données, ce serait cool, parce qu'à force je m'y perds....
Je pense en plus que ca résumerait pas mal l'ensemble des questions posées sur ce topic et que ca aiderait bon nombre de gens...
En tout cas merci beaucoup à toi pour toutes tes aides, ta rapidité et ta disponibilité tu nous aide bien!!
G-RoM Répondre à GRoM34 | J'ai bien compris ta question. Mais là, il faut que tu me postes tes tables pour que je puisse bâtir le formulaire et te le poster en retour, c'est trop complexe à expliquer comme ça - ou bien j'ai la flemme.
(cjoint.com)
Eventuellement colle les donnés ou seulement une partie dans Excel, je me débrouillerai...
Pourquoi se compliquer la vie à faire simple, quand c'est si simple de faire compliqué? Répondre à LatelyGeek |
|
|
|
|
|
|
|
|
|
|