IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WebDev Discussion :

Probleme execution Requete AS400 [WB18]


Sujet :

WebDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 30
    Par défaut Probleme execution Requete AS400
    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

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2003
    Messages : 151
    Par défaut
    J'ai , moi aussi, eut des pbs avec le programme de génération de requete de windev Webdev pour acces à des base AS400

    Donc comme tu l'as bien decrit tu as 3 possibilités

    1/ Utiliser le generateur de requete sans modif
    2/ utiliser le générateur et coller le code SQL de l'as400 directement dans la fenetre Code SQL du générateur
    3/ Dans le programme dans la fonction HexecuteRequete

    Pour le 3/, as tu vérifié que tu utilises bien le parametre HRequeteSansCorrection

  3. #3
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 30
    Par défaut
    Hello Cogito

    Citation Envoyé par Cogito.11 Voir le message
    Donc comme tu l'as bien decrit tu as 3 possibilités
    Enfait non, j'ai pas si bien décrit ça, moi je partait sur différentes fonction d'execution

    Citation Envoyé par Cogito.11 Voir le message
    J
    1/ Utiliser le generateur de requete sans modif
    2/ utiliser le générateur et coller le code SQL de l'as400 directement dans la fenetre Code SQL du générateur
    3/ Dans le programme dans la fonction HexecuteRequete

    Pour le 3/, as tu vérifié que tu utilises bien le parametre HRequeteSansCorrection
    En tout cas je savait pas que le 2/ était possible!! pour ce qui est du /3 j'avai fait ca mais avec la fonction HexecuteRequeteSQL

    Du coup grace à ton explication en 2/ j'ai peu réussir l’exécution et du coup la lecture de ma requete, merci cogito

    voila le code qui fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SI HExécuteRequête(REQ_SelectFLS_CALFER,PELancement,hRequêteSansCorrection) = Vrai
    	// avec PELancement définit dans l'analyse
    Par contre j'ai remarqué que quand on est sur webdev18 la "prédiction" de code (style intellisense de visual studio) demande pour HExécuteRequête comme 1er paramètre le nom de la requete, en 2éme le mode ( ici hRequêteSansCorrect), puis d'autre paramètre comme la connexion ( ici PELancement) or en procédant comme cela la connexion n'est pas reconnue elle doit en 2éme paramètre comme il est écrit dans la doc pcsoft :
    Exécuter une requête SQL via une connexion
    <Résultat> = HExécuteRequêteSQL(<Nom de la requête> [, <Connexion> [, <Mode>]] , <Texte de la requête en SQL>)
    Du coup l'intellisense webdev18 ma mis en erreur

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2003
    Messages : 151
    Par défaut
    En faite je n'utilise jamais la solution 3 , je prefere avoir toutes mes requetes facilement accessible dans la partie requete pour pouvoir les reutiliser dans d'autre partie du code.

    Et j'utilise la solution 2/ qd la 1/ ne fonctionne pas. C'est souvent à cause de l'interpretation du code SQL fait par le driver.

  5. #5
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 30
    Par défaut
    pour l'aspect réutilisation de code, en /3 avec une variable globale ca marche aussi. Mais pour des raisons d'organisation et pratique je suis d'accord avec toi.
    D’ailleurs c'est ce que j'ai fait(la /1 mais manuellement les requetes AS400 traduit en Sql webdev ) mais du coup je préfère la solution /2 car de toute façon je test toujours mes requêtes sur l'AS400 j'aurais du coup une étape en moins à faire

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme execution requete
    Par lesafir dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 15/06/2007, 16h04
  2. probleme execution requete
    Par lesafir dans le forum ASP.NET
    Réponses: 3
    Dernier message: 15/06/2007, 11h29
  3. [débutant]probleme execution requete INSERT
    Par melodie53 dans le forum JDBC
    Réponses: 2
    Dernier message: 03/08/2006, 16h45
  4. [MySQL] Problème exécution requête
    Par snaxisnake dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 08/05/2006, 16h00
  5. [VB.net] Probleme execution requete
    Par nico10gbb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/04/2006, 11h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo