abmail
Messages postés20Date d'inscriptionlundi 15 mars 2004StatutMembreDernière intervention 8 juin 2012
-
22 sept. 2009 à 13:16
nickadele
Messages postés1251Date d'inscriptionmercredi 7 août 2002StatutModérateurDernière intervention10 avril 2013
-
5 oct. 2009 à 15:52
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
[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 ?
abmail
Messages postés20Date d'inscriptionlundi 15 mars 2004StatutMembreDernière intervention 8 juin 20121 5 oct. 2009 à 08:58
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.
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 23 sept. 2009 à 08: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.
nickadele
Messages postés1251Date d'inscriptionmercredi 7 août 2002StatutModérateurDernière intervention10 avril 2013 3 oct. 2009 à 19:27
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
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 5 oct. 2009 à 09:12
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
nickadele
Messages postés1251Date d'inscriptionmercredi 7 août 2002StatutModérateurDernière intervention10 avril 2013 5 oct. 2009 à 15:52
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