Bonjour,
Je n'arrive pas à executer et encore moins à lire les résultat de ma requete via webdev alors que cette dernière fonctionne parfaitement sur l'as400 (via emulateur 5250)
bon déjà voici la requete en question en sql d2b
J'utilise un Acces natif (easycom) mes tables sont donc présent dans l'analyse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT FLSNUMPK, CALDDEB, CALDFIN FROM pelancmnt0/FLS join pelancmnt0/CALMOY on FLS.JAO01AFK = CALMOY.AORESSFK Join pelancmnt0/CALFER on calmoy.idcalferfk = calfer.calfernpk WHERE EXISTS (SELECT * FROM pelancmnt0/CALFER JOIN pelancmnt0/CALMOY ON CALFER.CALFERPK = CALMOY.IDCALFERFK WHERE fls.FLSDTFIN BETWEEN calfer.CALDDEB AND calfer.CALDFIN AND CALMOY.AORESSFK = FLS.JAO01AFK)
Jusqu’à présent j’exécutais mes requêtes via la fonction Hexecuterequete avec la requete dans le projet en ficher .WDR
Mais avec cette méthode la requete, qui du coup donne ca en sql classique,
renvoie ce problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT FLS.FLSNUMPK, CALFER.CALDDEB, CALFER.CALDFIN FROM FLS JOIN CALMOY ON FLS.JAO01AFK = CALMOY.AORESSFK JOIN CALFER ON CALMOY.IDCALFERFK = CALFER.CALFERPK WHERE EXISTS (SELECT * FROM CALFER JOIN CALMOY ON CALFER.CALFERPK = CALMOY.IDCALFERFK WHERE FLS.FLSDTFIN BETWEEN CALFER.CALDDEB AND CALFER.CALDFIN AND CALMOY.AORESSFK = FLS.JAO01AFK)
j'ai l'impression que le générateur de requete webdev a du mal avec les jointures, surtout quand celle ci sont dans un select imbriqué. Ou bien serait-ce mot clef EXISTS ?? pourtant d’après la doc pc soft elle est supporté.L'opérateur utilisé dans l'expression ( EXISTS ( SELECT CALFER.CALFERPK AS CALFERPK , CALFER.CALDDEB AS CALDDEB , CALFER.CALDFIN AS CALDFIN , CALMOY.AORESSFK AS AORESSFK , CALMOY.IDCALFERFK AS IDCALFERFK
FROM CALFER INNER JOIN CALMOY ON ( CALFER.CALFERPK = CALMOY.IDCALFERFK )
WHERE ( ( FLS.FLSDTFIN BETWEEN CALFER.CALDDEB AND CALFER.CALDFIN ) AND ( CALMOY.AORESSFK = FLS.JAO01AFK ) ) ) ) n'est pas supporté par l'éditeur de requêtes.
Du coup je me suis dit que je vais utilisé la fonction hexecuterequetesql :
Voilà j'arrive à rien; que ce soit avec un l'un ou l'autre de ces différent essai. la requete ne s’exécute pas alors que la déclaration de connexion (d’ailleurs je pense pas que ce n'était pas vraiment nécessaire car dans l’analyse j'ai déjà une autre connexion qui prend les même paramètres que PEL. Mais bon avec ou sans ca ne marche pas)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 sReq est une chaîne nBjour est un entier dNouvelleDate, datetempo est une Date // req fonctionne sur l'AS 400 mais le sql made in pcsoft ne la comprend pas //sreq = "SELECT FLS.FLSNUMPK AS FLSID, CALFER.CALDDEB AS DATDEB, CALFER.CALDFIN AS DATFIN, FLS.FLSDTFIN AS FLSDFIN FROM FLS join CALMOY on FLS.JAO01AFK = CALMOY.AORESSFK Join CALFER on calmoy.idcalferfk = calfer.calferpk WHERE EXISTS (SELECT * FROM CALFER JOIN CALMOY ON CALFER.CALFERPK = CALMOY.IDCALFERFK WHERE FLS.FLSDTFIN BETWEEN CALFER.CALDDEB AND CALFER.CALDFIN AND CALMOY.AORESSFK = FLS.JAO01AFK)" sReq = [ SELECT FLSNUMPK, CALDDEB, CALDFIN FROM pelancmnt0/FLS join pelancmnt0/CALMOY on FLS.JAO01AFK = CALMOY.AORESSFK Join pelancmnt0/CALFER on CALMOY.IDCALFERFK = CALFER.CALFERPK WHERE EXISTS (SELECT * FROM pelancmnt0/CALFER JOIN pelancmnt0/CALMOY on CALFER.CALFERPK = CALMOY.IDCALFERFK WHERE FLS.FLSDTFIN BETWEEN CALFER.CALDDEB AND CALFER.CALDFIN AND CALMOY.AORESSFK = FLS.JAO01AFK) ] HDécritConnexion("PEL","login","mdpl","","",hAccèsNatifAS400,hOLectureEcriture) // ok HOuvreConnexion("PELt") // ok Req_result = "" SI HExécuteRequêteSQL(Req_result,"PEL",hRequêteSansCorrection,sReq) = Vrai // Pas ok //si HExécuteRequêteSQL(Req_result,sReq) = Vrai ALORS // pas ok POUR TOUTE Req_result // *** traitement *** FIN SINON Erreur(HErreurInfo()) FIN FIN
ah et Erreur(HErreurInfo()) n'affiche rien => popup vide.
Du coup je me suis dit que je vais tenté avec ExeSQL; et là dès la connexion ça ne marche pas
Si vous avez idée de comment faire fonctionner cette requete celà me serait d'un grand aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SI SQLConnecte("PEL","nom","mdp") = Faux ALORS SQLInfoGene() Erreur("La connexion à la source de données PELancement a échoué." + RC + ... "Code erreur : " + SQL.Erreur + RC + SQL.MesErreur) SINON
en tous cas, merci de votre lecture![]()
Partager