#1 Mon 17 February 2025 00:04
- Marcopololo
- Participant actif
- Date d'inscription: 23 Nov 2021
- Messages: 60
QGIS: Infobulles conditionnees
Bonjour,
Peut on avec du code HTML conditionnée une infobulle.
J'ai créé une infobulle d'après une jointure de table et lorsque l'année de plantation existe, je souhaiterais qu'elle apparaisse sinon je veux juste le N° de parcelle et la surface ?
Fonction if ?
Merci d'avance de votre aide
Marcopololo
Hors ligne
#2 Mon 17 February 2025 09:35
- Al3+
- Participant actif
- Lieu: Fécamp
- Date d'inscription: 5 Sep 2005
- Messages: 64
Re: QGIS: Infobulles conditionnees
Bonjour,
Oui c'est possible et vous avez déjà trouvé une solution.
De manière très simple à l'endroit où vous voulez afficher les données :
Code:
[% if ("annee_plantation" is not null, 'Plantation : ' ||"annee_plantation",'') %]
Une autre solution avec CASE WHEN (notamment s'il y a plusieurs conditions à respecter) :
Code:
[% CASE WHEN annee_plantation is not null THEN '<p><strong>Plantation :<i>'||"annee_plantation"||'</i></strong></p>' ELSE '' END %]
On peut aller très loin dans le formatage des données (tableaux, styles, imbrication de conditions, etc...)
Bon courage
Dernière modification par Al3+ (Mon 17 February 2025 09:36)
Hors ligne
#3 Mon 17 February 2025 20:27
- Marcopololo
- Participant actif
- Date d'inscription: 23 Nov 2021
- Messages: 60
Re: QGIS: Infobulles conditionnees
Merci beaucoup.
J'ai opté pour case when
Marc
Hors ligne
#4 Mon 17 February 2025 21:50
- Marcopololo
- Participant actif
- Date d'inscription: 23 Nov 2021
- Messages: 60
Re: QGIS: Infobulles conditionnees
J'ai ajouté ce code pour une autre ligne mais cela semble être inclusif car si un des champs est nul cela ne s'affiche pas :
Code:
[% CASE WHEN "liste_arbresAnnee" is not null THEN '<p><strong>Type : <i>'||"liste_arbresPlant1"+', '+"liste_arbresPlant2"+', '+"liste_arbresPlant3"||'</i></strong></p>' ELSE '' END %]
Bien sur si je supprime les champs plant2 et plant3 cela fonctionne. je suppose que || n'est pas le bon opérateur.
Merci de votre aide
Marcopololo
Hors ligne
#5 Mon 17 February 2025 22:56
- Marcopololo
- Participant actif
- Date d'inscription: 23 Nov 2021
- Messages: 60
Re: QGIS: Infobulles conditionnees
Voici ce que j'ai fait, mais peut être y a t-il plus simple :
Code:
[% CASE WHEN "liste_arbresPlant3" is not null THEN '<p><strong>Type : <i>'||"liste_arbresPlant1" ||', '|| "liste_arbresPlant2" ||', '|| "liste_arbresPlant3"||'</i></strong></p>' WHEN "liste_arbresPlant2" is not null THEN '<p><strong>Type : <i>'||"liste_arbresPlant1" ||', '|| "liste_arbresPlant2" ||'</i></strong></p>' WHEN "liste_arbresPlant1" is not null THEN '<p><strong>Type : <i>'||"liste_arbresPlant1" ||'</i></strong></p>' ELSE '' END %]
Hors ligne
#6 Tue 18 February 2025 01:28
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 4023
Re: QGIS: Infobulles conditionnees
Bonsoir,
J'ai l'impression que votre solution ne porte pas reellement sur la question initialement posée, mais bon, il semble que vous ayez compris le fonctionnement. C'est l'essentiel.
Pour ce qui est des fonctionnements de + ou || avec NuLL, je vous invite à lire attentivement leur aide dans le logiciel ou la doc en ligne qui aborde le sujet et l'alternative concat.
Pour votre solution case when en cascade, ceci n'est vrai que si les champs 1, 2 et 3 sont renseignés en cascade. Assurez-vous que c'est le cas. Autrement si 2 peut être vide et 3 renseigné par ex, alors l'étiquette serait vide.
Hors ligne
#7 Tue 18 February 2025 14:21
- Marcopololo
- Participant actif
- Date d'inscription: 23 Nov 2021
- Messages: 60
Re: QGIS: Infobulles conditionnees
Bonjour,
Oui effectivement ce n'était pas le sujet d'origine, plutôt une continuité.
J'ai pris cette solution car je ne suis pas arrivé à mettre un ou exclusif pour afficher le résultat si un des trois champ n'est pas renseigné.
Marcopololo
Hors ligne
#8 Tue 18 February 2025 17:27
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 4023
Re: QGIS: Infobulles conditionnees
Bonjour,
J'ai pris cette solution car je ne suis pas arrivé à mettre un ou exclusif pour afficher le résultat si un des trois champ n'est pas renseigné.
coalesce et concat (mentionné précédemment) sont deux fonctions qui vous aident à gérer le null dans ce genre de formule.
Mais à vrai dire, l'écriture la plus propre aujourd'hui à mon avis est avec l'utilisation des listes (elle gère toute seule les NULL et les virgules), genre:
Code:
array_to_string( array("liste_arbresPlant1", "liste_arbresPlant2", "liste_arbresPlant3"), ', ')
Hors ligne
#9 Wed 19 February 2025 10:17
- Marcopololo
- Participant actif
- Date d'inscription: 23 Nov 2021
- Messages: 60
Re: QGIS: Infobulles conditionnees
Merci, effectivement c'est plus propre.
Mais on ne peut pas mettre en forme le texte avec les balises strong et i à l'intérieur d'array ?
Pour la balise strong j'ai englobé la fonction mais je voudrais mettre en italique le nom des arbres mais impossible. Ou faut il la placer ?
Merci d'avance
Dernière modification par Marcopololo (Wed 19 February 2025 11:12)
Hors ligne
#10 Thu 20 February 2025 09:20
- Al3+
- Participant actif
- Lieu: Fécamp
- Date d'inscription: 5 Sep 2005
- Messages: 64
Re: QGIS: Infobulles conditionnees
Bonjour Marcopololo
Il suffit d'englober la fonction array entre les balises <i>.
Quelque chose comme ça devrait fonctionner (j'avoue ne pas l'avoir testé sous QGIS) :
Code:
[% CASE WHEN "liste_arbresAnnee" is not null THEN '<p><strong>Type : <i>'|| array_to_string( array("liste_arbresPlant1", "liste_arbresPlant2", "liste_arbresPlant3"), ', ') ||'</i></strong></p>' ELSE '' END %]
Hors ligne
#11 Thu 20 February 2025 11:47
- Marcopololo
- Participant actif
- Date d'inscription: 23 Nov 2021
- Messages: 60
Re: QGIS: Infobulles conditionnees
Merci
Hors ligne