setSearchSpec ORDER BY error

Bonjour,

Nous souhaitons effectuer un tri dans un setSearchSpec.

Lorsque nous effectuons la requête sql suivante :

setSearchSpec(“unite_codeorg like '” + value + “’ or unite_libelleabreg like '%” + value + “%’ or femere_codemecanoair like '” + value + “’ or t_fegeo_commune_fk.commune_nom like '%” + value + “’ ORDER BY CASE unite_type WHEN ‘MER’ THEN 1 WHEN ‘FIL’ THEN 2 WHEN ‘TER’ THEN 3 END”);

Une erreur : ERROR: syntax error at or near “ORDER” apparait.

Cependant l’appel dans la base via cette requête fonctionne :

select * from sio_unite ORDER BY CASE unite_type WHEN ‘MER’ THEN 1 WHEN ‘FIL’ THEN 2 WHEN ‘TER’ THEN 3 END

D’où ma question comment affecter un order by dans un setsearchspec ?

Merci d’avance

Benoît

La search spec est un fragment de where clause.

On ne peut donc pas y mettre d’order by (car la plateforme insère la search spec dans la where clause, après les items de where clause génériques et donc avant le order by générique)

Il n’existe pas de mécanisme pour substituer l’order by générique par un order by spécifique.

De ce que je comprends de votre besoin il faudrait plutôt :

  • soit renommer les codes en base pour les mettre dans l’ordre alphabétique qui vous convient (genre 001 à la place de MER, 002 à la place de FIL et 003 à la place de TER ou dans le genre)
  • sinon il existe un mécanisme standard sur les listes de valeur pour trier sur l’ordre dans la liste plutôt que sur l’ordre alphabétique du code. On va vérifier si c’est disponible sur la P24 que vous utilisez

Oui c’est bien présent en P24:

Sort by type dans la définition du field (pour les fields de type énumérés)

Merci David problème resolu

Quelle option avez vous retenue au final ?

Sort by type dans la définition du field (pour les fields de type énumérés)

OK c’est la solution la moins impactante sur le paramétrage et la plus “propre”.

Par contre elle induit une complexité supplémentaire au niveau de la requête générée car elle ajoute des jointures vers les tables des listes de valeur.

Bref vérifiez que l’impact sur les performances n’est pas trop important.

Sinon vous devrez opter par un renommage des codes dans l’ordre alphabétique souhaité ce qui peut avoir de nombreux impacts de nommages sur votre code et votre paramétrage…