Sous formulaire lié à plusieurs listes déroulantes
Résolu
Loic_7447
Messages postés
49
Date d'inscription
Statut
Membre
Dernière intervention
-
Loic_7447 Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
Loic_7447 Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
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 !
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:
- Libreoffice base formulaire liste déroulante
- Liste déroulante excel - Guide
- Whatsapp formulaire opposition - Guide
- Liste déroulante en cascade - Guide
- Formulaire de réclamation facebook - Guide
- Base de registre - Guide
7 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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".
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").
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").
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
je vois que tu fais
pourquoi inclus-tu ID?
SELECT DISTINCT [#tstock].ID, [#tstock].DETAIL
pourquoi inclus-tu ID?
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.
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.
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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?
- 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?
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 :
- 2eme : #rCritère_détail ; Critère dans le champ 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 :
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 :
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 !
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 !