|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
Bonjour,
Comme le dis le titre j'aurai besoin d'aide pour faire mes filtre. J'ai un formulaire qui comporte 2 case à cocher. L'une pour des filtre en cascade et l'autre pour des filtre unique. Prenons le premier cas les filtre en cascade. Lorsqu'il clic dessus 5 listes déroulante s'affiche. (Poste certu, Sous poste certu, Poste MOA, Sous Poste MOA et Désignation). On pourra sélectionner soit: _Poste certu, Sous poste certu _Poste Certu, Sous poste Certu et Désignation _Poste MOA, Sous Poste MOA _Poste MOA,SOUS poste MOA et Désignation Ce qui nous fait 4 requête différente. Je voudrai selon les choix des lsite créer une requête pour m'afficher les résultat. Je pensais faire les 4 choix possible en vba et selon si les liste sont vide ou pas créer la requête. Expl: sSQL="Select...." (Choix1) sSQL1="..." (choix 2) Etc Et ensuite selon si les lsite sont vide ou pas affecter le bon sSQL a ma création de requête. Mais je trouve ca lourd. Y a t'il un moyen d'optimalisé mon besoin? Merci |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
La deuxième case à cocher permet d'afficher les mêmes liste déroulante (mais non liés entre elle cette fois).
On pourra alors choisir soit le poste certu, MOA, le Sous Poste ou la Désignation Soit en choisir plusieurs voir toute. Et dans ce cas la prévoir tous les cas possible risque d'être très long et pas très optimal. Je n'arrive pas a trouver la solution pour créer mon "where" selon les choix possible. J'avais pensé (et c'est la que je me dis que ma réflexion n'est peut être pas la bonne) de mettre dans un tableau les valeur des liste sélectionné et de les mettre dans une variable texte en disant que si le tableau est vide ma variable text est vide, si le tableau ne comporte qu'une ligne ma variable text prend la valeur du tableau jusque la ca va) mais si il y a plusieurs valeurs je doit mettre le "AND" entre chaque valeur. Je sais que ce n'est pas très claire car ca ne l'est pas dans ma tête En faite je cherche une réflexion plus qu'une solution pour résoudre mon problème de filtre le plus optimal possible. Merci pour vos suggestions. |
|
|
00
|
|
|
#3 | ||
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
Bon pour que vous compreniez mieux voici comment j'ai fait pour le premier cas (cas des listes en cascade)
lmd_PC: liste déroulante du poste certu lmd_SPC: liste déroulante du sous poste certu (dépend du choix du poste certu) lmd_PMOA: liste déroulante du poste MOA lmd_SPMOA: liste déroulante du sous poste MOA (dépend du poste MOA) Lmd_D: liste déroulante de la désignation (dépend de Lmd_SPC ou de lmd_SPMOA) Lmd_PC et Lmd_PMOA ne peuvent être sélectionné ensemble. Code :
Ce qui est long. Ici ca va encore car il n'y a que 4 choix possible. Mais dans mon deuxième cas, les 5 listes déroulante (les même qu'ici) ne sont pas liées entre elle. Donc il y a 5!(5 factoriel) cas (dsl jsuis pas sur du nombre). Autant dire que c'est relou voir même très très chiant à écrire de la même manière que le cas ci-dessus. Avez vous une idée pour optimaliser mon code? Merci |
||
|
|
00
|
|
|
#4 | ||||
|
Nouveau Membre du Club
![]() Mickaël Dessinateur industriel Inscription : décembre 2010 Messages : 61 ![]() |
Bonjour,
Je pense m'être confronté à un problème plus ou moins similaire. Je ne sais pas si c'est une bonne manière de faire ou non. Cela dit, j'ai fais en sorte de créer ma requête en plusieurs petites parties paramétrées. Je m'explique avec un peu de code.. Cette partie me définit la base de ma requête en fonction d'une combinaison de choix fait dans plusieurs combobox: Code :
Code :
Code :
lbPiece.RowSource = Req & Old & Std & " ORDER BY PN;" Cordialement, Mickaël |
||||
|
|
00
|
|
|
#5 | ||
|
Membre habitué
![]() quentin masséInscription : janvier 2010 Messages : 251 ![]() |
Merci Vhalar.
Je vais regarder ton code avec attention. Pendant le we j'ai trouvé la solution à mon problème. En faite selon si les liste déroulante sont vide ou pas je créé une variable qui récupère le nom de la liste déroulante (le même que celle du champs de la table correspondante) ainsi que sa valeur. J'obtiens donc une variable texte qui correspond a mon where de ma requête sql. Code :
Si celui si est a 1 je ne met pas de "AND" sinon j'en met 1 avant ma variable texte. Merci encore pour ton aide. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com