|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 63 ![]() |
Bonjour,
Je reviens vers vous pour savoir comment modifier mon code afin de rendre possible la recherche multicritère par une listbox à sélections multiples. Actuellement j'utlise des checkboxes mais celà n'est pas évolutif en cas d'ajout d'un paramètres dans ma table Code :
Code :
SELECT [Tb_Fonction].[CD_Fct], [Tb_Fonction].[LB_Fct] FROM Tb_Fonction ORDER BY [CD_Fct]; Merci par avance
|
||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Alexandre SahliComptable Inscription : mars 2005 Messages : 507 ![]() |
bonjour,
tu peux trouver la solution dans le lien suivant: http://access.developpez.com/sources...erListeRequete Tu verras comment parcourir une zone de liste et d'extraire les lignes sélectionnées, tu pourras ainsi facilement adapter le code |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 63 ![]() |
Merci pour ta réponse
![]() J'avais survolé trop vite ce code effectivement Ajouter un champ "Sélection" est tout à fait faisable cependant je ne vais pas avoir qu'une seule zone de liste dans ma recherche multicritère mais 7. Du coup ajouter 7 champs dans ma table pour mes sélections, ne me semble pas terrible
|
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Alexandre SahliComptable Inscription : mars 2005 Messages : 507 ![]() |
bonjour,
tu vas avoir 1 zone de liste avec la possibilité de sélectionner 1 ou plusieurs champs. Ensuite tu parcoures la liste en ajoutant les champs sélectionnés. J'ai mis un exemple de zone de liste avec sélection multiple. |
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 63 ![]() |
Alexandre,
J'ai effectivement une listbox de ce type. Aussi, je ne sais pas si nous nous comprennons bien donc comme souvent, une image sera plus parlante Cette image n'est pas la mienne mais montre très bien ce que je recherche: remplacer les checkboxes de "Lieu" par exemple au profit d'une listbox multi sélection... Le lien vers le tutoriel de yannprada: http://www.developpez.net/forums/d10...res-amelioree/ |
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Alexandre SahliComptable Inscription : mars 2005 Messages : 507 ![]() |
ok
je vois un peu mieux. Il te faut faire évidemment 1 zone de liste par champ, dans tous les cas pour le champs lieu, état, utilisation, prochain contrôle. Le mieux serait d'avoir la requête sous-jacente de la zone de liste d'avoir l'extraction des valeurs du champs (requête avec distinct) Ensuite dans ton code d'affichage il te faut faire quelque chose qui ressemble à cela: Code :
Where ([Lieu] in (TFO1, TFO3..)) and ([Etat] in("etalonnage", "en service",...)) and |
|
|
00
|
|
|
#7 | ||
|
Nouveau Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 63 ![]() |
Ma zone de liste est remplie grâce à la requête suivante:
Code :
SELECT [Tb_Fonction].[CD_Fct], [Tb_Fonction].[LB_Fct] FROM Tb_Fonction ORDER BY [CD_Fct]; CD_Fct B C CNG D DRM R RD RDC Voici mon programme à l'heure actuelle: Code :
lorsque je sélectionne une Fonction (Fct) par exemple "R" rien ne change, par contre lorsque je sélectionne un élément d'un autre champ comme "A rébuter" du champ "Code Etat", mon tableau se met à jour avec ma requête. La multisélection me sort une erreur: ")" en trop (normal vu la tête de ma fonction If Me.chkCodeEtat )Je sens que ça avance
|
||
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Alexandre SahliComptable Inscription : mars 2005 Messages : 507 ![]() |
Re bonjour,
attention il ne faut pas confondre toute les listes. D'après ce que tu m'a envoyer il y a une zone de liste pour l'affichage des donnés et tu désires filtrer ces données. Ce que je te propose c'est de rajouter des zones de listes à sélection multiple pour l'établissement du filtre de ta zone de liste présente. Ceci c'est pour développer ce que viens de faire. Par contre il me semble que ton problème est très semblable au tutoriel de Caféine pour le filtrage d'un formulaire. |
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 63 ![]() |
Merci pour ta réponse,
Effectivement il y a une zone de liste pour l'affichage des donnés et je désire filtrer ces données (avec des zones de listes multisélection). Le tutoriel de Caféine est la source de mon programme, seulement il me faut le modifier afin de remplacer les zones de listes déroulantes (sélection multiple impossible) par des zones de listes normales qui me permettront de sélectionner plusieurs critères d'un même champ |
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 63 ![]() |
Ne me faites pas croire que personne n'a utilisé la multisélection pour une recherche
|
|
|
00
|
|
|
#11 |
|
Membre chevronné
![]() Alexandre SahliComptable Inscription : mars 2005 Messages : 507 ![]() |
bonjour,
Pour changer un zone de liste déroulante en zone de liste c'est très simple. Clique droit avec la souris et tu choisis "remplacer par" ->zone de liste. puis dans la zone de liste tu vas la feuille de propriété de la zone de liste et tu vas sous l'onglet "autre" , sélection multiple -> étendu. cela me paraissait basique et je n'ai pas compris que ne savait pas le faire. |
|
|
00
|
|
|
#12 | ||
|
Nouveau Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 63 ![]() |
Sisi tout celà est fait depuis un moment
Nous nous sommes effectivement mal compris. Mon code en l'état (cf tutoriel de Caféine), ne fonctionne pas avec des zones de listes à sélections multiples et c'est là qu'est mon problème Mon code est adapté à des combobox où je faisais 1 sélection et pas 2 ou plus. C'est cette partie de mon code qui n'est plus adaptée: Code :
|
||
|
|
00
|
|
|
#13 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 63 ![]() |
Mon formulaire ressemble à l'image de que je poste, j'ai volontairement enlever des détails
On peut y voir ma zone de sélection multiple qui n'est pas fonctionnelle au niveau du code Je ne sais pas du tout comment gérer le choix multiple De même j'ai un autre soucis lorsque ma listebox de résultats est en mode sélection multiple: le double clic pour l'édition d'un enregistrement ne fonctionne pas (erreur) mais ça sera le sujet d'un nouveau poste
|
|
|
00
|
|
|
#14 | ||
|
Membre chevronné
![]() Alexandre SahliComptable Inscription : mars 2005 Messages : 507 ![]() |
voila,
En fait tu dois parcourir ta zone de liste du début à la fin et prendre seulement ceux qui sont sélectionnés Code :
Pour la sélection des éléments de la zone de liste tu dois mettre une close du type: Code :
Where Monchamp in( Valeur1; Valeur2; Valeur 3....) Code :
Monchamp = valeur1 and monchamp = valeur2 ... Le code que je t'ai mis va créer un string qui ressemble à: Code :
[Monchamp in( Valeur1; Valeur2; Valeur 3....) Maintenant si tu as plusieurs zone de liste tu peux très bien te créer une fonction qui va faire le boulot et tu l'appelles pour chaque zone de liste ce qui peux grandement simplifier ton code. J'espère que cela va t'aider |
||
|
|
10
|
|
|
#15 | ||
|
Nouveau Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 63 ![]() |
Merci pour ton poste, je sens que je suis proche de mon but !
Mon programme est un blagueur Le code suivant me renvoie une erreur dès que je coche la checkbox se trouvant à côté de l'étiquette "Fonction". Cette checkbox comme les autres sur mon formulaire fait apparaitre ma liste de choix de fonctions (B, C , CNG,...). Erreur: Erreur d'exécution '3075': ) en trop dans l'expression "T_Gestion!Id <> Null And)" Je ne pense pas que l'erreur soit vraiment dûe à une parenthèse mal ouverte ou fermée. Je n'en ai pas vu... Parc contre j'ai un doute bien plus important sur la place de mon "And" Code :
|
||
|
|
00
|
|
|
#16 | ||
|
Membre chevronné
![]() Alexandre SahliComptable Inscription : mars 2005 Messages : 507 ![]() |
Ce n'est pas encore cela. Il te faut une String "aide" pour créer le in...
Code :
Dans ce genre de code pour vérifier la validité du SQL un petit test du genre: te permettra de trouver facilement les erreurs. Autre conseil n'utilise pas SQL comme nom de variale, c'est un mot réservé utilise plutôt StrSQL bonne chance |
||
|
|
00
|
|
|
#17 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 63 ![]() |
Merci Alexandre
![]() Pour le code mais aussi pour la vérification de mon code SQL avec msgbox et pour le nom de variable! |
|
|
00
|
|
|
#18 | ||
|
Nouveau Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 63 ![]() |
Il ne me reste plus qu'à résoudre un renvoie nul:
En affichant un MsgBox StrSQL dans le code suivant: Code :
A la ligne suivante en mode débug En survolant avec ma souris, il est affiché cmbRechFct = Null me renvoie .ListCount - 1 = < Variable objet ou variable de bloc With non définie > .Selected(i) me renvoie la même chose Je vais y arriver
|
||
|
|
00
|
|
|
#19 | ||||||
|
Membre chevronné
![]() Alexandre SahliComptable Inscription : mars 2005 Messages : 507 ![]() |
Bonjour,,
c'est déjà très bien parti, j'ai fait une erreur: Code :
c'est d'autre part si tu as plusieurs zone de liste. Je pense qu'il serait préférable de créer une fonction pour ne pas répéter du code inutilement à tester dans ton application 1° création de la fonction si possible dans un module Code :
Code :
bonne chance, je suis une semaine en vacances sans ordi à bientôt et bon courage |
||||||
|
|
00
|
|
|
#20 |
|
Membre chevronné
![]() Alexandre SahliComptable Inscription : mars 2005 Messages : 507 ![]() |
Attention c'est seulement
pas ..!!!! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com