Sous formulaire lié à plusieurs listes déroulantes

Résolu/Fermé
Loic_7447 Messages postés 49 Date d'inscription jeudi 11 juillet 2019 Statut Membre Dernière intervention 17 novembre 2020 - 5 oct. 2020 à 14:08
Loic_7447 Messages postés 49 Date d'inscription jeudi 11 juillet 2019 Statut Membre Dernière intervention 17 novembre 2020 - 29 oct. 2020 à 17:19
Bonjour à tous,


J'ai un formulaire comportant (pour l'instant) deux listes déroulantes, une avec les types d'outil en stock, l'autre avec les spécificités des types d'outils (filtrée par la première). Le but du formulaire est de vérifier la disponibilité les outils dans le stock.

J'aimerais afficher dans un sous formulaire les résultats en fonction de ce que l'utilisateur veut filtrer, à savoir simplement le type d'outil ou la spécificité. Or je n'arrive pas à combiner les deux dans un même formulaire.

J'aimerais par la suite ajouter d'autre listes en cascade, pour affiner le plus possible la recherche.

Aussi, je n'arrive pas à appliquer SELECT DISTINCT à la deuxième liste.



Voici mon fichier : https://we.tl/t-zkNdvkfBJ7

Le formulaire en question s'appelle "#f_rechercher_type"


Merci d'avance pour votre aide !
A voir également:

7 réponses

yg_be Messages postés 23463 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 février 2025 Ambassadeur 1 568
5 oct. 2020 à 16:10
bonjour, je ne vois pas où, dans ton fichier, tu essaies de faire quoi, ni ne comprends ce que signifie "appliquer SELECT DISTINCT à la deuxième liste".
0
Loic_7447 Messages postés 49 Date d'inscription jeudi 11 juillet 2019 Statut Membre Dernière intervention 17 novembre 2020
6 oct. 2020 à 07:58
J'aimerais que lorsque l'utilisateur sélectionne un type d'outil dans la première liste, toutes les références de ce type d'outil apparaissent, et que si il décide de sélectionner en plus un détail dans la deuxième liste, toutes les références de ce type d'outil plus ce détail apparaissent.

Actuellement, dans la deuxième liste, chaque détail de chaque outil apparait.
Or il y en a en commun. J'aimerais qu'il n'y ai qu'une seule fois le nom de chaque détail (j'ai essayé via la commande SQL "SELECT DISTINCT").
0
yg_be Messages postés 23463 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 février 2025 1 568
6 oct. 2020 à 09:59
tiens, en fait, je ne trouve pas de formulaire nommé "#f_rechercher_type".
j'avais probablement regardé un autre formulaire.
0
yg_be Messages postés 23463 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 février 2025 1 568
6 oct. 2020 à 10:05
tu écris "je n'arrive pas à appliquer SELECT DISTINCT à la deuxième liste" et "j'ai essayé via la commande SQL "SELECT DISTINCT"", et tu n'expliques pas le résultat obtenu, ni en quoi cela n'est pas ce que tu attends.
0
yg_be Messages postés 23463 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 février 2025 Ambassadeur 1 568
6 oct. 2020 à 10:11
je vois que tu fais
SELECT DISTINCT [#tstock].ID, [#tstock].DETAIL

pourquoi inclus-tu ID?
0
Loic_7447 Messages postés 49 Date d'inscription jeudi 11 juillet 2019 Statut Membre Dernière intervention 17 novembre 2020
6 oct. 2020 à 11:58
Pour la commande SQL, j'ai expliquer un peu plus haut mais j'ai du mal m'exprimer.

J'aimerais faire des listes en cascade.
Dans ma table source "#tStock", j'ai 220 lignes (certaines références sont en plusieurs fois et il n'y a que deux types d'outils différents).
Ma deuxième liste "liste_spé" me donne les 220 détail des outils (un par référence donc). Or, il n'y a que 4 ou 5 détails différents.
J'aimerais que ma "liste_spé" regroupe et me donne que les 4 ou 5 détails différents, qui lorsque j'en sélectionne un, me donne toutes les références avec ce détail.
Je suis passé par "SELECT DISTINCT" car c'est la méthode que je connais, mais ça n'a pas l'air d'être la bonne.

J'ai inclus ID car c'est ma clé primaire. J'ai essayé sans, et la liste déroulante ne me sort aucun résultat ... J'en ai donc déduit qu'il est nécessaire.
Je pense que le SELECT DISTINCT s'applique au champ ID, qui n'a aucun doublon (car clé primaire). Or je ne sais pas comment régler ceci.
0
yg_be Messages postés 23463 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 février 2025 1 568
6 oct. 2020 à 12:55
peux-tu faire un petit effort, et préciser le nom correct du formulaire dont il s'agit?
0
yg_be Messages postés 23463 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 février 2025 1 568
6 oct. 2020 à 13:01
ta déduction n'est pas correcte.
tu as construit ta liste sur base d'une requête qui retourne deux colonnes, la seconde étant DETAIL.
tu dois maintenant construire la liste sur base d'une requête qui ne retourne qu'une seul colonne.
tu pourrais adapter la requête pour continuer à retourner deux colonnes, mais ce n'est pas très propre.
0
Loic_7447 Messages postés 49 Date d'inscription jeudi 11 juillet 2019 Statut Membre Dernière intervention 17 novembre 2020 > yg_be Messages postés 23463 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 février 2025
6 oct. 2020 à 15:52
Voici la commande mise à jour et fonctionnelle dans le formulaire "f_chercher_type" :
SELECT DISTINCT [#tStock].DETAIL, [#tStock].DETAIL FROM [#tStock] WHERE ((([#tStock].TYPE)=[liste_outils])); 


Merci pour ce point !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Loic_7447 Messages postés 49 Date d'inscription jeudi 11 juillet 2019 Statut Membre Dernière intervention 17 novembre 2020
6 oct. 2020 à 16:05
Maintenant j'aimerais que mon sous formulaire affiche le stock en fonction de ce que l'utilisateur saisi : si il ne sélectionne que le type d'outil, il doit afficher tous ceux en stock, si il sélectionne en plus le détail, le résultat doit s'affiner en conséquence.

Pour ce faire, j'ai définit ma requête "rAffichage" comme objet source de mon sous-formulaire. Dans la requête, j'ai essayé de remplir la ligne "critère" des champs "TYPE" et "DETAIL", mais je ne sais pas vraiment quoi remplir pour que cela fonctionne.
0
yg_be Messages postés 23463 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 février 2025 1 568
6 oct. 2020 à 18:28
tu veux, au moment où le bouton "recherche" est cliqué, appliquer un filtre aux données du sous-formulaire. un filtre est, dans ce cas, parfaitement suffisant, inutile de chipoter dans la requête source du sous-formulaire.
0
yg_be Messages postés 23463 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 février 2025 Ambassadeur 1 568
6 oct. 2020 à 18:25
avant d'aller plus loin, je pense utile de mettre un peu d'ordre dans ta base:
- tu te prends les pieds dans de multiples objets qui se ressemblent, ont des noms similaires, et sont plus ou moins utilisés. par exemple, tu m'avais indiqué que le formulaire était #f_rechercher_type", et ce formulaire n'existe pas.
- tu utilises simultanément deux tables, #tStock et #tStock2, qui ont des structures et/ou des contenus différents.
- tu as une table tOutil, que tu utilises parfois, tandis que tu enregistres parfois le nom de l'outil, et pas son id, dans la table stock.

qu'en penses-tu?
0
Loic_7447 Messages postés 49 Date d'inscription jeudi 11 juillet 2019 Statut Membre Dernière intervention 17 novembre 2020
29 oct. 2020 à 17:19
J'ai (enfin) réglé mon problème !

Dans mon formulaire #fRecherche_type j'ai donc :
- Une 1ere liste déroulante "liste_type"
- Une 2eme liste "liste_detail"
- Un sous formulaire "Resultats" (la table principale) pour afficher mes résultats

J'ai créer 3 requêtes différentes. Dans chacune, j'ai mis tous les champs de ma table source, mais j'ai remplis différents critères :
- 1ere : #rCritère_type ; Critère dans le champ type :
[Formulaire]!#fRecherche_type.[liste_type]

- 2eme : #rCritère_détail ; Critère dans le champ detail :
[Formulaire]!#fRecherche_type.[liste_detail]

- 3eme : #rCritère_type+detail ; Cette fois ci, j'ai mis les deux derniers critères dans la même requête.

Avec ceci, j'ai créer deux codes VBA :
- Un qui s'active après une selection dans liste_type :
Private Sub liste_type_Change()

If (IsNull(Forms![#fRecherche_type]![liste_detail])) Then 
Forms![#fRecherche_type]![Resultats].SourceObject = "Query.#rCritère_type"
Else
Forms![#fRecherche_type]![Resultats].SourceObject = "Query.#rCritère_type+detail"
End If
Forms![#fRecherche_type]![Resultats].Requery

End Sub

Si le champ "liste_detail" est vide et qu'on sélectionne quelque chose de "liste_type", on affiche tous les résultats correspondants, sinon, on affiche les résultats des type avec le détail correspondant.

- Un autre après une sélection dans liste_detail :
Private Sub liste_detail_Change()

If (IsNull(Forms![#fRecherche_type]![liste_type])) Then
    Forms![#fRecherche_type]![Resultats].SourceObject = "Query.#rCritère_detail"
    Else
    Forms![#fRecherche_type]![Resultats].SourceObject = "Query.#rCritère_type+detail"
End If
Forms![#fRecherche_type]![Resultats].Requery

End Sub

Si le champ "liste_type" est vide et qu'on sélectionne quelque chose de "liste_detail", on affiche tous les résultats correspondants, sinon, on affiche les résultats des type avec le détail correspondant.

Voila comment j'ai réaliser mon formulaire !
0