Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Auteur: Dodger
Bonjour à tous,
Je désespère avec un setFilter dans une DW ...
Le but est de filtrer le contenu d'une DW avec une chaine de caractère saisie par l'utilisateur sans respecter la casse ni les caractères accentués...
Je pensais utiliser la fonction TRANSLATE d'oracle pour avoir quelque chose comme :
translate(lower(MON_CHAMP) ,'éèêëàäâîïôöûüçÉÈÊËÀÄÂÎÏÔÖÛÜÇ','eeeeaaaiioouucEEEEAAAIIOOUUC') LIKE ...
Mon problème est que la fonction translate n'est pas reconnue dans un SetFilter
Message : User function was not found.
avant de passer a des chose plus crade comme definir une nouvelle colonne sans accents ni majuscule pour le filtre ou remplacer le setFilter par un getSqlSelect, modif à la barbarre suivi d'un setSqlSelect, je pose la question aux pro du PB.
Merci
Hors ligne
Tu as essayé la fonction PB Upper?
Il faudrait aussi que tu regardes l'utilisation des expressions régulières: Il y a plusieurs exemples sur ce forum.
Hors ligne
Merci de ta réponse, le problème du Upper() est qu'il ne "supprime" pas les accents
Pour les expressions régulières, je vais regarder même si j'ai un doute sur la transformation d'une colonne pour faire un filtre (je les réservent plus pour les masques de saisie, non ? )
@+ Dodger
Hors ligne
Sinon, tu as possibilité d'utiliser les fonctions pos et Replace de PB. En les intégrant dans une fonction globale, ça devrait même être réutilisable partout dans ton application.
(Note: je crois que dans les PFC, il existe une fonction of_global_replace qui devrait déjà gérer ça).
Hors ligne
Bonjour,
Sinon, tu peux ajouter une computed column à la requête SQL de ta datawindow avec la fonction translate d'oracle et tu fais le SetFilter sur cette nouvelle colonne.
Hors ligne
Merci buck,
Nous avons eu la même idée, que j'ai d’ailleurs mise en oeuvre dés vendredi ;-)
Dommage que Sybase n'ai pas prévu une petit fonction pour ce cas.
Bien sur Foon je vais utiliser les fonction pos et replace pour formater ma chaine d'entrée.
Merci a tous les deux pour votre aide.
Hors ligne