|
HExecuteRequêteSQL avec MySQL |
Débuté par guest, 07 fév. 2006 10:15 - 4 réponses |
| |
| | | |
|
| |
Posté le 07 février 2006 - 10:15 |
Bonjour, Jusqu'à maintenant j'utilisais HF C/S avec les ordres HExecuteRequeteSQL, HLitPremier, ... je souhaite utiliser MySQL pour mon projet. Pour cela j'utilise l'accès natif fournit par PCSoft. Je n'ai donc pas à modifier le code saisie auparavant pour HF C/S, à part pour certaines requêtes où la syntaxe SQL n'est plus bonne, par exemple pour les requêtes avec des jointures.
C'est ici que j'ai un problème, lorsque j'exécute une requête avec des jointures utilisant la syntaxe SQL standard, et non la syntaxe SQL pour HF C/S, le HExecuteRequeteSQL me renvoie une erreur (erreur de syntaxe justement). Or ma requête fonctionne très bien depuis WDSQL ou depuis mysqlCC.
J'ai essayé d'utiliser le paramètre hRequêteSansCorrection, mais ca n'a rien changé. J'ai aussi modifié mon code pour utilisé les ordres SQL* à la place des ordres H* et là ca fonctionne, mais cela m'oblige à remodifier tout mon code. Pouvez-vous me dire si je suis obligé d'utiliser les ordres SQL* ou comment faire pour que ca fonctionne avec les ordres H* ?
Merci d'avance Yvan |
| |
| |
| | | |
|
| | |
| |
Posté le 07 février 2006 - 10:39 |
on aimerait bien voir la requete, y'a pas de raison que ca ne fonctionne pas : si HF sait le faire les autres BDD savent le faire
Yvan a formulé ce mardi :
Bonjour, Jusqu'à maintenant j'utilisais HF C/S avec les ordres HExecuteRequeteSQL, HLitPremier, ... je souhaite utiliser MySQL pour mon projet. Pour cela j'utilise l'accès natif fournit par PCSoft. Je n'ai donc pas à modifier le code saisie auparavant pour HF C/S, à part pour certaines requêtes où la syntaxe SQL n'est plus bonne, par exemple pour les requêtes avec des jointures.
C'est ici que j'ai un problème, lorsque j'exécute une requête avec des jointures utilisant la syntaxe SQL standard, et non la syntaxe SQL pour HF C/S, le HExecuteRequeteSQL me renvoie une erreur (erreur de syntaxe justement). Or ma requête fonctionne très bien depuis WDSQL ou depuis mysqlCC.
J'ai essayé d'utiliser le paramètre hRequêteSansCorrection, mais ca n'a rien changé. J'ai aussi modifié mon code pour utilisé les ordres SQL* à la place des ordres H* et là ca fonctionne, mais cela m'oblige à remodifier tout mon code. Pouvez-vous me dire si je suis obligé d'utiliser les ordres SQL* ou comment faire pour que ca fonctionne avec les ordres H* ?
Merci d'avance Yvan
-- Pierre BOUSQUET
" Ne me dites pas que ce problème est difficile. S'il n'était pas difficile, ce ne serait pas un problème. " |
| |
| |
| | | |
|
| | |
| |
Posté le 07 février 2006 - 11:47 |
Ma requête récupère les informations pour une fiche client. Elle utilise pas mal de jointure pour récupérer toutes informations nécessaires. Cette requête fonctionne très bien avec WDSQL ou avec mysqlCC mais en utilisant HExecuteRequete ou HExecuteRequeteSQL j'obtiens une erreur "mot Left inattendu". C'est le deuxième left qui lui pose problème.
Voilà le code :
SELECT CL.CPTTTC,CL.TYPE,CL.ETAT,CL.IDSTATUT,ST.CODE AS STCODE,CL.RAISONSOCIALE,CL.ADRESSE1,CL.ADRESSE2,CL.ADRESSE3,CL.CP,CL.VILLE,CL.VILLE2,PA.IDPAYS,PA.CODEISO AS PACODE,PA.NOMPAYS AS PALBL,CL.IDACTIV,ACT.CODE AS ACTCODE,ACT.LIBELLE AS ACTLBL,CL.IDCOM,SAL.NOM + ' ' + SAL.PRENOM AS SALLBL,CL.TEL,CL.FAX,CL.SITEWEB,CL.CF,CL.IDGRPPRIX,GR.NOM AS GRLBL,CL.STATQUAL,CL.IDREGTVA,RT.TAUXTVA AS RTLBL,CL.IBAN,CL.BIC,CL.DOM,CL.CPTHT,CPT.LIBELLE AS CPTLBL,CL.TVAINTRA,CL.IDMODEREG,MR.LIBREG AS MRLBL,CL.IDECHREG,ER.LIBECHREG AS ERLBL,CL.IDPORT,PO.LIBPORT AS POLBL,CL.TRAITE,CL.NBEXFAC,CL.NBEXBL FROM CLIENT CL LEFT OUTER JOIN STATUT ST ON CL.IDSTATUT=ST.IDSTATUT LEFT OUTER JOIN PAYS PA ON CL.IDPAYS=PA.IDPAYS LEFT OUTER JOIN ACTIV ACT ON CL.IDACTIV¬T.IDACTIV LEFT OUTER JOIN SALARIE SAL ON CL.IDCOM=SAL.IDSALARIE LEFT OUTER JOIN GROUPE GR ON CL.IDGRPPRIX=GR.IDGROUPE LEFT OUTER JOIN REGTVA RT ON CL.IDREGTVA=RT.IDREGTVA LEFT OUTER JOIN CPT ON CL.CPTHT=CPT.IDCPT LEFT OUTER JOIN MODEREG MR ON CL.IDMODEREG=MR.IDMODEREG LEFT OUTER JOIN ECHREG ER ON CL.IDECHREG=ER.IDECHREG LEFT OUTER JOIN PORT PO ON CL.IDPORT=PO.IDPORT WHERE CL.IDCLIENT='3' |
| |
| |
| | | |
|
| | |
| |
Posté le 07 février 2006 - 11:56 |
effectivement la requete est bonne, as tu essayé un HExécuteRequêteSQL() avec hRequêteSansCorrection, de mon coté j'ai pas de problèmes
Après mûre réflexion, Yvan a écrit :
Ma requête récupère les informations pour une fiche client. Elle utilise pas mal de jointure pour récupérer toutes informations nécessaires. Cette requête fonctionne très bien avec WDSQL ou avec mysqlCC mais en utilisant HExecuteRequete ou HExecuteRequeteSQL j'obtiens une erreur "mot Left inattendu". C'est le deuxième left qui lui pose problème.
Voilà le code :
SELECT CL.CPTTTC,CL.TYPE,CL.ETAT,CL.IDSTATUT,ST.CODE AS STCODE,CL.RAISONSOCIALE,CL.ADRESSE1,CL.ADRESSE2,CL.ADRESSE3,CL.CP,CL.VILLE,CL.VILLE2,PA.IDPAYS,PA.CODEISO AS PACODE,PA.NOMPAYS AS PALBL,CL.IDACTIV,ACT.CODE AS ACTCODE,ACT.LIBELLE AS ACTLBL,CL.IDCOM,SAL.NOM + ' ' + SAL.PRENOM AS SALLBL,CL.TEL,CL.FAX,CL.SITEWEB,CL.CF,CL.IDGRPPRIX,GR.NOM AS GRLBL,CL.STATQUAL,CL.IDREGTVA,RT.TAUXTVA AS RTLBL,CL.IBAN,CL.BIC,CL.DOM,CL.CPTHT,CPT.LIBELLE AS CPTLBL,CL.TVAINTRA,CL.IDMODEREG,MR.LIBREG AS MRLBL,CL.IDECHREG,ER.LIBECHREG AS ERLBL,CL.IDPORT,PO.LIBPORT AS POLBL,CL.TRAITE,CL.NBEXFAC,CL.NBEXBL FROM CLIENT CL LEFT OUTER JOIN STATUT ST ON CL.IDSTATUT=ST.IDSTATUT LEFT OUTER JOIN PAYS PA ON CL.IDPAYS=PA.IDPAYS LEFT OUTER JOIN ACTIV ACT ON CL.IDACTIV¬T.IDACTIV LEFT OUTER JOIN SALARIE SAL ON CL.IDCOM=SAL.IDSALARIE LEFT OUTER JOIN GROUPE GR ON CL.IDGRPPRIX=GR.IDGROUPE LEFT OUTER JOIN REGTVA RT ON CL.IDREGTVA=RT.IDREGTVA LEFT OUTER JOIN CPT ON CL.CPTHT=CPT.IDCPT LEFT OUTER JOIN MODEREG MR ON CL.IDMODEREG=MR.IDMODEREG LEFT OUTER JOIN ECHREG ER ON CL.IDECHREG=ER.IDECHREG LEFT OUTER JOIN PORT PO ON CL.IDPORT=PO.IDPORT WHERE CL.IDCLIENT='3'
-- Pierre BOUSQUET
" Ne me dites pas que ce problème est difficile. S'il n'était pas difficile, ce ne serait pas un problème. " |
| |
| |
| | | |
|
| | |
| |
Posté le 07 février 2006 - 13:49 |
Merci pour les réponses. Ca fonctionne correctement maintenant en utilisant HExecuteRequeteSQL avec hRequeteSansCorrection. Ca ne fonctionnait pas quand j'utilisais HExecuteRequete avec ou sans hRequeteSansCorrection. |
| |
| |
| | | |
|
| | | | |
| | |
|