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
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)
J'utilise un Acces natif (easycom) mes tables sont donc présent dans l'analyse.
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,
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)
renvoie ce problème :

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.
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é.

Du coup je me suis dit que je vais utilisé la fonction hexecuterequetesql :

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
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)

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

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
Si vous avez idée de comment faire fonctionner cette requete celà me serait d'un grand aide.
en tous cas, merci de votre lecture