[ACCESS] valeur de liste déroulante - Comment sélectionner toutes les valeurs

Bonjour,
J’ai un soucis de liste déroulante. J’ai une zone de liste qui affiche des enregistrement en fonction d’une date. On sélectionne une année dans une liste et ma zone de liste affiche les enregistrements de cette année. Mais j’aimerai aussi pouvoir selectionner “toutes les années” dans ma liste déroulante pour que ma zone de liste affiche tous les enregistrements.

Comment celà est-il faisable?
Merci d’avance à ceux qui savent comment faire.

Bonsoir

En fait, lorsque tu cliques dans ta zone liste déroulante pour selectionner une année, tu ne fais qu’exécuter une requète. Donc si tu cherches à afficher tous les enregistrements, tu dois, par exemple, ajouter au début de la zone de liste déroulante l’item ‘tous’ et modifier ta requète en conséquence; celle ci comporteta inévitablement un test.

muscorp c’est exactement ce que je veux faire, mais je ne sais pas comment ajouter un item. Je cherche depuis des heures !
Si tu peux m’aider, ça serait une aide immense :clap:

Comment as tu mis les années

Si c’est manuellement dans une table tu n’as qu’à en faire autant pour ‘Tous’

Si c’est en VBA : cmbAnnee.text addItem “Tous”

Non, mes choix de liste provienne d’une requete:


SELECT Year([f_dateD]) AS Expr1
FROM Fiche
GROUP BY Year([f_dateD]);

Ouf! me revoilà car il a fallu tester

Pour afficher une zone de liste affichant les années avec une ligne Tous en haut tu auras :

Select F-dateD From (Select F-dateD,1 As Position From Fiche Union
Select TOP 1 "-Tous-",0 From Fiche) Order By Position

Explications :

La première partie de la sous requête :
Select F-dateD,1 As Position From Fiche

Retourne la liste des Années et 0 dans une seconde colonne nommée position.

La seconde partie :
Select Top 1 "-Tous-",0 From Fiche
envoie une seule ligne (Top 1) avec Tous dans le champ F_dateD et 1 dans le champ position.

Super. Merci beaucoup. Ta requete fonctione.
en fait, lorsque je l’utilise, le code se transforme en :


SELECT [%$##@_Alias].f_dateD
FROM [Select f_dateD,1 As Position From Fiche Union 
Select TOP 1 "-Tous-",0 From Fiche]. AS [%$##@_Alias]
ORDER BY [%$##@_Alias].Position;

Le résultat est :

  • Tous -
    15/10/2006
    07/11/2006
    05/11/2006
    03/01/2007
    01/09/2005

J’ai voulu retrouvé ma liste avec uniquement les année alors j’ai modifié la requete mais mal modifié puisque ça ne fonctionne pas !


SELECT [COLOR=red]year(f_dateD)[/COLOR]
FROM [Select f_dateD,1 As Position From Fiche Union 
Select TOP 1 "-Tous-",0 From Fiche]. AS [%$##@_Alias]
ORDER BY [%$##@_Alias].Position;

Le résultat est:
#Erreur
2006
2006
2007
2005

J’ai aussi essayé de regrouper les années pour que 2006 ne figure qu’une seule fois, mais alors là plus rien ne fonctionne. Je suis désolé d’être aussi nul, mais j’ai l’impression qu’avec tes connaissaces tu va pouvoir encore m’aider.
Grand merci.

Au lieu de f_dateD

Mets : Year([f_dateD])

Ca ça marche:


SELECT [Fiche].f_dateD
FROM [Select f_dateD,1 As Position From Fiche Union 
Select TOP 1 "-Tous-",0 From Fiche]. AS [Fiche]
ORDER BY [Fiche].Position,[Fiche].f_dateD;

et ça ça ne marche pas:


SELECT [Fiche].f_dateD
FROM [Select year(f_dateD),1 As Position From Fiche Union 
Select TOP 1 "-Tous-",0 From Fiche]. AS [Fiche]
ORDER BY [Fiche].Position,[Fiche].f_dateD;

ni ça:


SELECT Year(f_dateD) AS Expr1
FROM [Select f_dateD,1 As Position From Fiche Union 
Select TOP 1 "-Tous-",0 From Fiche]. AS Fiche
ORDER BY Fiche.Position, Fiche.f_dateD;

Le dernier code met effectivement que les années,mais déjàplusieurs fois 2006 et "Erreur" au lieu de "- Tous -"

As-tu une idée de ce que je fais mal?

ReSalut,
Il m’a fallu du temps… jusqu’à maintenant, mais j’ai trouvé une solution quime permet d’avoir les années non redondantes dans ma liste de sélection et avec "- Toutes - en début de liste.
Voilà comment j’ai fait, mais si ce n’est pas la meilleure des solution je suis tout à fait prenneur de remarques:


' Première requete
SELECT Year([f_dateD]) AS An
FROM Fiche
GROUP BY Year([f_dateD]);

' 2ème requete
SELECT Annees.An
FROM [Select An,1 As Position From Annees Union
SELECT "- Tous -",0 FROM Annees]. AS An
ORDER BY [An].Position, [An].An;

Muscorp, dans ton code tu avais mis:
Select TOP 1 “-Tous-”,0 From Fiche
J’ai supprimé ce qui est en rouge. Est-ce nécéssaire ou conseillé de le mettre?

Maintenant j’ai une autre question qui se pose. J’utilise plusieurs zones de listes déroulantes qui, en fonction de ce qui est sélectionné, doiventmettre à jour une zone de liste qui affiche les résultat de ma requête. Or, puisque j’ai un item - Tous - en haut de mes listes, je dois tester le choix de chaque liste. J’ai 5 listes de choix. Dois-je effectuer une requête différente pour chaque combinaison possible de sélection dans ces listes? J’espère qu’il y a une autre solution !

Sans la possibilté de choisir - Tous - une seule requête était suffisante, mais comment traiter ce nouveau dernier choix dans chaque liste ?

En espérant que quelqu’un va pourvoir m’aider, je vous remercie tous d’avance de donner de votre temps pour ce qui gallèrent à trouver des solutions.

Bon, je viens de faire le point et il faut impérativement que je trouve le moyen (que je cherche déséspérément) de réaliser mes requêtes sans devoir en faire une trentaine pour chaque cas.

Je demande conseil à quiconque peut m’aider.

Punaise, j’ai trouvé. Il est tard et j’ai passé beaucoup de temps, mais j’ai solutionné mon problème. Tout ça avec une seule requête, la fameuse « * » et des « If ».
Pouahhhh
soulagement et super content ! :clap:
Si quelqu’un veux ma solution, il suffit de me demander et je mets ça sur le forum.

Là je suis fatigué et demain je me lève tôt

bonne nuit et bonne journée à ceux pour qui il fait jour.

Encore GRAND merci à muscorp sans qui je n’aurais sans doute jamais trouvé. :love:

je suis interesse pas la solution que tu as trouvé, si ça t’ennuie pas de la mettre sur le forum, stp