#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: 3928
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: 3928
Re: QGIS/Mise en page: Liste de valeur 'Autre'
Bonjour,
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: 3928
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