Message posté par : LudoF
----------------------------------------
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 ;
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 !
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=372429#p372429
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net