Limitation cfquery à 255 car par variable contenant le sql [Résolu]

Signaler
Messages postés
20
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
8 juin 2012
-
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013
-
Bonjour,
ci joint le probleme que je rencontre :

En gros, je ne comprend pas pourquoi cf me tronque ma variable "varsql" qui contient l'instruction sql (issue d'une base de donnees)

exemple :

1er cas qui fonctionne !

<cfset varsql "select * from matable where id 251111">
<CFQUERY NAME="myrequete" DATASOURCE="#BaseSQL#">
#varsql#
</CFQUERY>

Dès lors que la longueur de "varsql" est inferieur à 255 caracteres cela fonctionne

maintenant si dans "varsql" je mets une requete de plus de 255 car :

<cfset varsql "SELECT [___COUPONS_RECUS.ID] FROM [___COUPONS_RECUS], [Prospect] where ([___COUPONS_RECUS.NUMCOUPON] [Prospect.NUMCOUPON] ) AND ((len(trim([___COUPONS_RECUS.civilite1])) > 0 and len(trim([___COUPONS_RECUS.civilite2])) > 0) or (len(trim([___COUPONS_RECUS.civilite1])) > 0 and len(trim([___COUPONS_RECUS.civilite2])) = 0)) AND ( [prospect.statut] = 'PROSPECT' OR [prospect.statut] = 'CLIENT A CONFIRMER' OR [prospect.statut] IS NULL) AND ([___COUPONS_RECUS.CAB] = 'FLD' ) AND len(trim([prospect.email])) > 0 ">

1/ j'affiche "varsql" par cfoutput = j'ai la requete entiere

2/ j'execute la requete via cfquery

<CFQUERY NAME="myrequete" DATASOURCE="#BaseSQL#">
#varsql#
</CFQUERY>

il me créé une erreur du genre :

[Macromedia][SequeLink JDBC Driver][ODBC Socket][Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression '([___COUPONS_RECUS.NUMCOUPON] = [Prospect.NUMCOUPON] ) AND ((len(trim([___COUPONS_RECUS.civilite1])) > 0 and len(trim([___COUPONS_RECUS.civilite2])) > 0) or (len(trim([___COUPONS_RECUS.civilite1])) > 0 and len(trim([___COUPONS_RECUS.civilite2])) = 0)) AND ( '.

En fait, cfquery tronque la variable "varsql" à 255 car et bien entendu cette variable tronqué (imcomplete donc) plante l'odbc et genere l'erreur.

je confirme que cette meme requete "copier/coller" directement dans le cfquery fonctionne parfaitement, il ne s'agit pas la d'une erreur de syntaxe sql mais bel et bien que cfquery tronque ma variable a 255 car.

Est ce quelqu'un a eu ce cas et est ce que c'est possible d'y remedier ?

pour info, j'utilise mx7 sur iis6

merci de votre aide

5 réponses

Messages postés
20
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
8 juin 2012
1
Bonjour et merci de vos reponses,
apres avoir bien galéré sur ce probleme et avoir testé multes fois mes requetes sql via access, je me suis donc rendu compte que le probleme ne venait pas du tag CFQUERY et l'affichage de la variable varsql via cfoutput ni meme de la requete elle-meme (avant cfoutput).

En fait le probleme est que cf me double les simple quote et genere logiquement une erreur sql que j'ai enfin pu réglé grace a la fonction "PreserveSingleQuotes"

voila je pense que ce post est clos et je vous remercie encore de m'avoir epauler sur ce probleme.

bonne journee a tous
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
C'est bizarre ça, ça voudrait dire que le CFQuery tronque à 255 toutes variables de type string ? Perso ça me laisse dubitatif mais on ne peut présager de rien..
As-tu essayer de découper ta string et de ré-intégrer tes morceaux de string en les concaténant dans ton CFQuery ??
Le mystère s'épaissit..
S.
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

Bonjour,

c'est le message de l'erreur qui est tronqué et non ton SQL. A mon avis tu as effectivement une erreur dans ton SQL. As tu essayé la query dans Access ?


Nickadele
non, ma belle ne s'appel pas Adèle
Mon Blog
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Grrr !! Ben alors.. on nous met sur une fausse piste ??
Face à une erreur on doit toujours décomposer les éléments en traitement.
Allez hop, tu as le droit d'accepter ta réponse, ça peut toujours aider quelqu'un.
S.
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

Ben voilà,

En résumé, il y avait bien une erreur au niveau du SQL.
C'est un fait que ce problème de simple quote peut-être un soucis et peux mener à des recherches pendanst des heures voir des jours.
Pour éviter ce genre de problème, pour ma part je travaille toujours avec les paramètres (cfqueryparam). L'avantage c'est que CF se charge lui même de mettre les quotes là ou il en faut.


Nickadele
non, ma belle ne s'appel pas Adèle
Mon Blog