Commence par Paramètre

Calogira -  
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'utilise l'outils "Click and decide builder", qui permet de faire des requêtes exécutables par les utilisateurs.

Voici le code SQL de ma requête :

DEFINE SOURCE "nom_base" TYPE src;
DEFINE PARAMETER parampays TYPE Char;
SELECT OTT_Pays.Code, OTT_Pays.Libellé, OTT_Pays."Code ISO"
FROM "OTT_Pays" OTT_Pays
WHERE OTT_Pays.Libellé LIKE Concat( parampays ,'%')

et voici le message d'erreur qui apparait :

"Erreur sur requête: erreur non spécifiée;SSYa"


Quelqu'un aurait-il une idée de ce qui pourrait provoquer ce message?
Ma requête me semble bonne pourtant

Merci d'avance

A voir également:

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour

Quel sgbd ?

Ensuite .. retire les caractères accentués
Et remplace les guillemets par des back quotes
1
Calogira
 
SQL Server 2005

Pour info, cette syntaxe fonctionne très bien avec des double quote et des caractères accentués lorsque le "commence par" est en dur (WHERE OTT_Pays.Libellé LIKE 'F%' par exemple)
C'est dès que j'utilise un paramètre que ça coince pour le "commence par"
car ceci : WHERE OTT_Pays.Libellé = parampays , fonctionne aussi très bien!

Je pense que c'est plus lié à l'outils Click and Decide, il me faudrait quelqu'un utilisant cet outil, mais ça doit pas courir les rues...

Merci pour ton aide en tout cas.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Calogira
 
Quand je parle des guillemets .. ce n'est pas pour les conditions ... mais pour le nom de tes champs ou de tes tables !
SELECT OTT_Pays.Code, OTT_Pays.Libellé, OTT_Pays."Code ISO"
FROM "OTT_Pays" OTT_Pays 

A remplacer par :
SELECT OTT_Pays.Code, OTT_Pays.Libellé, OTT_Pays.`Code ISO`
FROM `OTT_Pays` OTT_Pays 


Quand aux caractères accentués (là aussi dans le nom de champs, de tables ou de bdd....) c'est à proscrire !
Donc :
SELECT OTT_Pays.Code, OTT_Pays.Libelle, OTT_Pays.`Code ISO`
FROM `OTT_Pays` OTT_Pays 

(en ayant changé la structure de ta bdd pour y virer les accents bien évidement.. )
0
Calogira > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Oui, ta première réponse était déjà tout à fait limpide, je savais que tu parlais des noms de champs.
Ma réponse, de fait, était : ça fonctionne très bien ainsi, les 648 autres requêtes de l’outil fonctionnent avec les accents.

Récap :

WHERE OTT_Pays.Libellé LIKE 'F%' --> ça fonctionne
WHERE OTT_Pays.Libellé = parampays --> ça fonctionne
WHERE OTT_Pays.Libellé LIKE Concat( parampays ,'%') --> message d'erreur

Il semblerait que l'outil interprète mal la concaténation, d'où mon besoin d'avoir soit quelqu'un capable de me proposer des formules alternatives pour faire un "Commence Par Param", soit quelqu'un connaissant l'outil et cette erreur.

Merci toute de même pour ton aide..
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

As-tu essayé comme ça :
WHERE OTT_Pays.Libellé LIKE parampays + '%'


Xavier
0
Calogira
 
Bonjour,

Je viens d'essayer : ça ne fonctionne pas, mais le message d'erreur est différent :
"native error 210056" (je résume), soit un soucis de caractères spéciaux d'après mes recherches sur Google... Ce qui est problématique car, toutes les requêtes fonctionnent avec les accents qui se trouvent dans les noms de tables, je ne vais pas m'amuser à changer le nom des tables...
(Je me demande toute de même qui est l'idiot qui a conçu cette base, quelle idée de foutre des accents ...)

Merci beaucoup pour ton aide Xavier
0