Discussion: resultat requete parametrée [WD18]

  1. #1
    Candidat au Club
    Inscrit en
    janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 6
    Points : 2
    Points
    2

    Par défaut resultat requete parametrée

    bonjour a tous
    je debute mon premier gros projet sous windev et je dois developper des web services pour mon appli...
    la j execute une une procedure qui doit rechercher des données dans une base Hyperfile, requete que j ai créer avec l editeur de requete elle fonctionne
    je suis sur WD18, windows 7

    dans ma procedure je voudrais renvoyer le contenu direct de cette requete au client

    dans ma procedure:

    mon code
    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
     
     
    SI  HExécuteRequête(REQ_marequete,hDéfaut,client,nom) = Vrai ALORS 
     
     
     
    resultat = REQ_marequete 
     
     
    	RENVOYER Resultat
    SINON 
     
    	RENVOYER sCodeerreur
     
    FIN
    a l execution je fais (au niveau du client):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    monresultat est une source de donnée = maprocedure(client,nom)
    mais cela me renvoi une erreur comme quoi le resultat est vide et pourtant je teste si la requete s initialise

    je voudrais savoir si cest possible de renvoyer directement un jeu de données directement d une requete SQL ou autre et si oui comment
    merci

    j espere que j ai été clair mais je pourrais donner plus ample d info si cela est necessaire

    blairik

  2. #2
    Expert éminent
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    janvier 2009
    Messages
    3 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 270
    Points : 6 908
    Points
    6 908

    Par défaut

    Bonjour,
    Il faut garder à l'esprit qu'un WebService peut être consommé par "n'importe quelle application", et non seulement par une application WinDev.
    On ne peut donc pas envoyer une source de données.
    Dans ce genre de cas nous renvoyons un tableau de structure qui contient l'intégralité du résultat (entre autre).

    Tatayo.

  3. #3
    Candidat au Club
    Inscrit en
    janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 6
    Points : 2
    Points
    2

    Par défaut

    Citation Envoyé par tatayo Voir le message
    Bonjour,
    Il faut garder à l'esprit qu'un WebService peut être consommé par "n'importe quelle application", et non seulement par une application WinDev.
    On ne peut donc pas envoyer une source de données.
    Dans ce genre de cas nous renvoyons un tableau de structure qui contient l'intégralité du résultat (entre autre).

    Tatayo.
    je comprends bien...
    tu peux m aiguiller sur un exemple plus concret???

    la je pense donc a une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    pour tout marequete
     
    //prendre les champs un a un et ajouter
    // ca dans un tableau
    nom  = marequete.nom
    client = marequete.client 
     
    listeclient = ajoute(list,nom+client)
    FIN
    un truc du genre???

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    mars 2002
    Messages
    1 097
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 1 097
    Points : 564
    Points
    564

    Par défaut

    Personnellement je construis une structure XML

  5. #5
    Expert éminent
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    janvier 2009
    Messages
    3 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 270
    Points : 6 908
    Points
    6 908

    Par défaut

    Ca ressemble à ceci:
    Dans l'init du projet:
    Code Windev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    ST_Rapport est une Structure
    	bOK est un booléen
    	nNiveau est un entier
    	sMessage est une chaîne
    FIN
    ST_Taxe est une Structure
    	sCode est une chaîne
    	rTaux est un réel
    FIN
     
    ST_RecupListeTaxes est une Structure
    	stRapport 		est un ST_Rapport
    	tabListeTaxes 	est un tableau de ST_Taxe
    FIN
    Et une méthode du WebService:
    Code Windev : 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
     
    PROCEDURE RecupListeTaxes()
     
    stValeurRetour 	est un ST_RecupListeTaxes
    sRequete 		est une chaîne
    stTaxe 		est un ST_Taxe
     
    sRequete = [
    	select tax_c_code,tax_f_taux from taxe
    ]
     
    stValeurRetour.stRapport.bOK = Vrai
    QUAND EXCEPTION DANS
    	SI SqlExec(sRequete,"req1") ALORS
    		TANTQUE SQLAvance("req1") = 0
    			stTaxe.sCode 	= SQLLitCol("req1",1)
    			stTaxe.rTaux	= SQLLitCol("req1",2)
    			TableauAjoute(stValeurRetour.tabListeTaxes,stTaxe)
    		FIN
    	SINON
    		stValeurRetour.stRapport = RapportErreur("req1")
    	FIN
    	SQLFerme("req1")
    FAIRE
    	stValeurRetour.stRapport = RapportException()
    FIN
     
    RENVOYER stValeurRetour

    Là c'est un cas simple, mais on peut avoir des structures bien plus complexes, par exemple pour récupérer des articles.

    Tatayo.

  6. #6
    Candidat au Club
    Inscrit en
    janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 6
    Points : 2
    Points
    2

    Par défaut

    merci tatayo
    j ai reussi en fait la requete renvois un jeu de resultat (plusieurs lignes) donc a chaque fois j instancie une structure de mon choix je l initialise puis je l ajoute a mon tableau
    j avais une erreur d index quand j executais mon WS erreur 40 073 comme quoi ma variable n etais pas indexée
    j ai resolu en serialisant le tableau

    le WS fonctionne mais je peux pas voir les données sur un test (avec soap UI par exemple) vu que c est un buffer de données

    mon nouvau challenge est la serialisation/deserialisation des données je m y penche de suite

    merci a tous des que je reussi je viens cliqué sur le fameux resolu

    blairik

  7. #7
    Expert éminent
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    janvier 2009
    Messages
    3 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 270
    Points : 6 908
    Points
    6 908

    Par défaut

    Citation Envoyé par blairik Voir le message

    le WS fonctionne mais je peux pas voir les données sur un test (avec soap UI par exemple) vu que c est un buffer de données
    C'est étonnant, nos WebServices sont consommés par un site PHP sans problème de sérialisation ou autre (mais il sont en 20).

    Tatayo.

  8. #8
    Candidat au Club
    Inscrit en
    janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 6
    Points : 2
    Points
    2

    Par défaut

    Citation Envoyé par tatayo Voir le message
    C'est étonnant, nos WebServices sont consommés par un site PHP sans problème de sérialisation ou autre (mais il sont en 20).

    Tatayo.
    peut etre que je m exprime mal et je m en excuse
    en fait les données dans le tableau serialisé ne peuvent pas etre lues donc le test sur soapUI me donne des resutats illisibles mais aucunes erreur

    donc la je me penche sur la deserialisation pour pouvoir lire et exploiter mes datas

    j espere que la je suis plus explicite
    blairik

  9. #9
    Candidat au Club
    Inscrit en
    janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 6
    Points : 2
    Points
    2

    Par défaut

    bon la je seche
    c est interressant de voir mes pas à pas

    je viens de python donc j ai vraiment perdu l habitude des problemes de transtypages

    pour deserialiser j utilise le code suivant

    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
     
     
    bufFer est un Buffer
    vresult est un Variant = RechercherParPlace(zone)
     
    tabPdvliste est un tableau de chaînes = Désérialise(vPdv,bufFer,psdXML)
     
    SI tabPdvliste..Occurrence > 0 ALORS 
     
    	POUR TOUT ELÉMENT DE tabPdvliste
     
     
    		Trace(Elément)
     
    	FIN
    bon la on me jette en disant que le fichier XML n a pas pu etre chargé



    quest ce qui cloche ???
    aurai je oublié un details??

    merci
    blairik

  10. #10
    Expert éminent
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    janvier 2009
    Messages
    3 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 270
    Points : 6 908
    Points
    6 908

    Par défaut

    Ce que je ne comprends pas ici, c'est que de notre côté nous ne sérialisons/désérialisons rien du tout.
    Les méthodes des WebServices renvoient directement des structures (imbriquées) comme indiquées dans mon extrait de code.

    J'avoue que je n'ai pas le détail de l'utilisation en PHP, mais à ma connaissance le WebService est utilisé "en direct", sans traitement particulier.

    Tatayo.

  11. #11
    Candidat au Club
    Inscrit en
    janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 6
    Points : 2
    Points
    2

    Par défaut

    merci a tous

    je viens donc cloturer cette discussion ar j ai reussi
    avec l approche de TATAYO (je te dois une fiere chandelle)
    la structure passe bien sur le reseau mais attention quand vous tester avec un outil comme soapUI il renvois une chaine vide mais c est bien passé c est la ou je paniquais
    pour pouvoir acceder au tableau imbriqué il faut utiliser la notation pointee et a deux point: les les indices du tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    pour i=1 a lisrequete..occurence 
     
    listrequete.tabimbrique[i]:champ
     
    FIN
    et la bingo vous avez vos données
    (celle la je l ai eu au hasard juste en me trompant de touche clavier )

    bref cela fonctionne adieu les champs de strings empilés dans un tableau avec separateur et extracton de chaine et reparcours du tout

    allez bon vent
    je sens que je vais m habitué a cet environnement

    Blairik

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

Discussions similaires

  1. [AC-2007] Requete parametrée sur le resultat d'une autre requete
    Par rached2005 dans le forum Requêtes et SQL.
    Réponses: 19
    Dernier message: 18/01/2016, 08h58
  2. recuperation resultat requete
    Par mimilou dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 09/06/2004, 16h07
  3. Requete parametrée TADOQuery
    Par cdlr27 dans le forum Bases de données
    Réponses: 3
    Dernier message: 01/05/2004, 19h41
  4. Resultat requete dans une seule colonne
    Par mathieu--g dans le forum Sybase
    Réponses: 2
    Dernier message: 08/07/2003, 14h42
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 14h43

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