PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → HExecuteRequêteSQL avec MySQL
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.