begin process at 2012 02 11 21:54:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ColdFusion

 > 

Base de données

 > 

Autre

 > 

Limitation cfquery à 255 car par variable contenant le sql


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Limitation cfquery à 255 car par variable contenant le sql

mardi 22 septembre 2009 à 13:16:11 | Limitation cfquery à 255 car par variable contenant le sql

abmail

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




mercredi 23 septembre 2009 à 08:16:02 | Re : Limitation cfquery à 255 car par variable contenant le sql

syndrael

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.

samedi 3 octobre 2009 à 19:27:29 | Re : Limitation cfquery à 255 car par variable contenant le sql

nickadele

Membre Club Administrateur CodeS-SourceS
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
lundi 5 octobre 2009 à 08:58:49 | Re : Limitation cfquery à 255 car par variable contenant le sql

abmail

Réponse acceptée !
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

lundi 5 octobre 2009 à 09:12:17 | Re : Limitation cfquery à 255 car par variable contenant le sql

syndrael

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.
lundi 5 octobre 2009 à 15:52:14 | Re : Limitation cfquery à 255 car par variable contenant le sql

nickadele

Membre Club Administrateur CodeS-SourceS
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


Cette discussion est classée dans : and, trim, len, recus, coupons


Répondre à ce message

Sujets en rapport avec ce message

documentation du composant [ par artagnan ] salut voici mon script avec cfm je suis incapable de produire mon document du composant cfm avec mon navigateur web elle me sort une page vierge ma s


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,172 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales