#1 Tue 01 April 2025 09:30
- LudoF
- Juste Inscrit !
- Date d'inscription: 25 Mar 2025
- Messages: 2
Formulaire QField: Filtre menu déroulant via CASE WHEN ?
Bonjour,
Je travail sur un projet de formulaire à utiliser dans Qfield. Je suis sous Qgis 3.34.
Je bloque sur le filtrage des valeurs dans un menu déroulant.
J'ai 3 tables, 1 table parent "Strate", une table enfant "Description", et une 3eme "Liste_Essence", qui me sert pour avoir une liste déroulante des Essences dans "Description".
Le principe, dans une Strate, j'ai plusieurs descriptions d'essence. Soit un formulaire sur la Strate et un sous-formulaire pour chaque Description d'essence.
Relation entre Strate et Description, via MonIdStrate. Dans le sous-formulaire Description, j'ai un premier menu déroulant où l'utilisateur choisit un type d'essence avec un IdTypeEssence pour limiter ma liste déroulante des essences qui suit, puis un IdEssence pour le choix final dans cette liste.
Avec 2 strates et 2 types essences, tout va bien, j'ai juste besoin de filtrer mes IdEssence, en fonction de mon IdTypeEssence dans "Expression de filtre" des paramètres de champ ; "IdTypeEssence" = current_value ('IdTypeEssence')
Là où cela se complique, on me demande de rajouter une 3ème strate, qui est en fait une partie de la 1ère, avec des essences plus restrictives car plus monospécifique dans mon IdTypeEssence 1.
Dans ce cas, je dois filtrer mes essences dans le sous-formulaire, en fonction de; cette 3éme strate saisi dans le formulaire principale + un Type d'essence + un préfixe dans le nom des essences.
J'ai donc 3 requêtes pour filtrer ma liste d'essences:
- si ma strate parent est la 3 ème; attribute(@parent, 'MonIdStrate') = '3'
- alors je filtre mon type essence et en plus sur un préfixe dans le libellé de l'essence ; "ess_libelle" like 'Peuplier%' AND "IdTypeEssence" = current_value ('IdTypeEssence')
- sinon je filtre que selon mon type essence (Strate 1 et 2); "IdTypeEssence" = current_value ('IdTypeEssence')
Les 3 requêtes filtrent bien individuellement.
Par contre, lorsque je les réunis, cela ne filtre pas mon préfixe lorsque la 3ème strate est sélectionnée ;
Code:
CASE WHEN attribute(@parent, 'MonIdStrate') = '3' THEN "ess_libelle" like 'Peuplier%' AND "IdTypeEssence" = current_value ('IdTypeEssence') ELSE "IdTypeEssence" = current_value ('IdTypeEssence') END
J'ai tenté de nombreuses combinaisons (dont l'utilisation de IF), mais je n'y arrive pas.
Auriez-vous une idée du pourquoi, individuellement chaque requête fonctionne, mais que cela n'aboutit pas lorsque je les combine, svp?
Je vous remercie,
Belle journée !
Hors ligne