banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 16 July 2024 17:21

HockYan
Participant occasionnel
Date d'inscription: 21 Apr 2023
Messages: 17

QGIS/Mise en page: Liste de valeur 'Autre'

Bonjour,

Je bloque sur un sujet de liste de valeurs contenant la valeur 'Autre' dans ma mise en page.

Explication :
J'ai une couche "Cours eau" avec le champ "RIED1_BG" (valeur relationnelle) paramétré de façon à permettre les sélections multiples. Dans cette liste de valeurs, il y a une valeur 'Autre' qui, lorsqu'elle est cochée, appelle le champ "AU_RIE1_BG".

Dans ma mise en page sous format atlas, j'appelle ce champ afin d'afficher les résultats. Pour ce faire, j'utilise l'expression suivante :

Code:

case when "RIED1_BG" is NULL then '   -'
when "RIED1_BG" like '%Autre%' then "AU_RIE1_BG"
else replace(replace("RIED1_BG", '{', ''), '}', '')  end

La première partie du code me permet d'afficher un trait si la valeur est NULL. Ensuite, j'appelle le champ "AU_RIE1_BG" si 'Autre' est coché. Pour la dernière partie, c'est juste pour enlever les {} dans les résultats.

Ce code fonctionne bien quand le champ 'Autre' est coché. Cependant, je perds les autres valeurs de mon champ "RIED1_BG". Donc, si j'ai d'autres valeurs cochées ainsi que la valeur 'Autre', alors il ne me montre que la valeur du champ "AU_RIE1_BG".

Je ne sais pas quoi ajouter à mon expression afin d'afficher les valeurs de mon champ de base ainsi que la valeur du champ "AU_RIE1_BG" si 'Autre' est coché.

En espérant que vous puissiez m'aider.

Yan

Hors ligne

 

#2 Tue 16 July 2024 19:20

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3940

Re: QGIS/Mise en page: Liste de valeur 'Autre'

Bonsoir,
Dans un case when, c'est une seule clause qui passe. POINT! Donc si vous voulez pouvoir récupérer toute la liste, avec la valeur "Autre" modifiée, il faut fusionner les deux dernières conditions dans un même when. En gros, vous faites renvoyer le contenu du champ RIED1_BG et si "Autre" en fait partie, vous la modifiez. Soit quelque chose dans ce genre:

Code:

CASE WHEN "RIED1_BG" is NULL then '   -'
ELSE replace("RIED1_BG",
             map( '{', '',
                  '}', '',
                  'Autre', "AU_RIE1_BG" -- ici on remplace "Autre" s'il se trouve dans le champ
                )
            )
END

La fonction replace n'a pas besoin d'être imbriquée; elle propose des formes d'écriture simplifiée avec l'utilisation d'un map ou d'un array.

Hors ligne

 

#3 Fri 19 July 2024 11:57

HockYan
Participant occasionnel
Date d'inscription: 21 Apr 2023
Messages: 17

Re: QGIS/Mise en page: Liste de valeur 'Autre'

Bonjour,

Merci pour cette réponse. Ce code fonctionne très bien quand j'ai la case 'Autre' coché.
En revanche, quand j'ai pas la case 'Autre' coché avec d'autres valeurs dans ma liste cela ne fonctionne pas.

Exemple :
Mon champ "RIED1_BG" = 'valeur1', 'Valeur2', 'Autre'
Résultat sur mise en page = 'valeur1', 'Valeur2', 'valeur du champ Autre'

Mon champ "RIED1_BG" = 'valeur1', 'Valeur2'
Résultat sur mise en page = Zone de texte vide

Manque-t-il une condition au code me permettant d'avoir également ce type de résultat ?

Yan

Hors ligne

 

#4 Fri 19 July 2024 15:58

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3940

Re: QGIS/Mise en page: Liste de valeur 'Autre'

Bonjour,

HockYan a écrit:

Manque-t-il une condition au code me permettant d'avoir également ce type de résultat ?


Rien qui me saute aux yeux. Ce n'est que du remplacement de texte, et si 'Autre' n'est pas là, la fonction replace ignore simplement ce motif.  c'est tout. Vous êtes sûr que le champ "RIED1_BG" a bien des valeurs lorsque "Autre" n'est pas cochée?

Hors ligne

 

#5 Fri 19 July 2024 17:58

HockYan
Participant occasionnel
Date d'inscription: 21 Apr 2023
Messages: 17

Re: QGIS/Mise en page: Liste de valeur 'Autre'

J'ai effectivement des valeurs sur mon champ "RIED1_BG". Lorsque la case 'Autre' est coché mais pas de valeur dans le champ "AU_RIED1_BG" alors cela me mets également ma zone de texte vide.
Le code fonctionne que lorsque ma case 'Autre' est coché et que le champ 'AU_RIED1_BG' est non NULL.

Hors ligne

 

#6 Fri 19 July 2024 19:14

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3940

Re: QGIS/Mise en page: Liste de valeur 'Autre'

Le plus simple serait de partager un extrait de données (factices?) avec les différentes configurations possibles.

Hors ligne

 

Pied de page des forums

Powered by FluxBB