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

WinDev Discussion :

Retour une variable tableau depuis un webservice(WS)


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 378
    Points : 40
    Points
    40
    Par défaut Retour une variable tableau depuis un webservice(WS)
    Bonjour

    Pour la V26 mon webservice est généré en mode "Utilisation de structures intermédiaires pour le passage de paramètres (compatibilité 18)" ca marche sans problème.

    J'ai migré en V28 et mon web service est généré en mode "Passage direct des paramètres aux fonctions (Conseillé)"

    lors la génération de WS est terminée je teste j'ai le message suivant
    Nom : MSG.png
Affichages : 100
Taille : 17,4 Ko
    Après des recherches je trouve que les procédures qui ne retourne pas une variable de type de tableau fonctionne bien
    mais les procédures qui retournent un tableau de type structure j'ai le message (en haut)

    Code coté WS
    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
     
    // Dans la déclaration globale
    STListeArticle est une structure
    nReference est un entier sur 8
    moPrixHT est une monétaire
    FIN
    gtabListeArticle est un tableau de STListeArticle
     
    //Procédure
    Procedure AfficheListeRef(Ref est un entier sur 8)
    Req.ParamRef=Req
    HExécuteRequête(Req, hRequêteDéfaut)
    HLitPremier(Req)
    TANTQUE PAS HEnDehors( Req )
    gtabListeArticle .AjouteLigne([Req.Reference,Req.Prix])
    HLitSuivant(Req)
    FIN
    RENVOYER (gtabListeArticle ) //Retour un tableau
    Coté Consommation
    Message d'erreur : AfficheListeRef(Ref) est un inconnu (La procédure 'AfficheListeRef(Ref)' n'a pas été trouvée dans le Webservice.)
    Il n'importe pas cette procédure dans l'explorateur "Webservices Importés"

    Lors je modifie le ws au lieu de retourner un tableau, par exemple, je renvoie une chaine
    la procédure AfficheListeRef(Ref) est connu dans le coté Client(Consommation) et fonctionne bien
    Mon problème c'est la variable tableau et je dois retourner un tableau car je dois afficher une liste
    Merci de me donner une explication ou une solution

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 267
    Points
    5 267
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Il faut renvoyer le résultat de la sérialisation de ton tableau. Par ailleurs il est plus rapide de remplir ton tableau via FichierVersTableau
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 378
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Bonjour,
    Il faut renvoyer le résultat de la sérialisation de ton tableau. Par ailleurs il est plus rapide de remplir ton tableau via FichierVersTableau
    Merci Voroltinquo de ton retour

    Mais avant de ça j'ai le message La procédure 'AfficheListeRef(Ref)' n'a pas été trouvée dans le Webservice

    En plus je fais un test avec sérialisation /Désérialisation, j'ai le même message

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    Tu as bien changé le type de données dans l'entête de ta procédure (=passer de tableau en buffer) ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 378
    Points : 40
    Points
    40
    Par défaut
    Merci pour ton retour

    Oui Voila mon code coté (Client)
    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
     
    //Daclaration globale
    STCatego	est une Structure
    	ID						est un entier sur 8
    	Sdesignation			est un string
    FIN
    stTabCategorie est une Structure
    	tabCatego est un tableau de STCatego
    FIN
     
    MonTableau est une stTabCategorie
    bbuf est un Buffer=WsListeCategorie(gnClient)   //!!!! ici j'ai le message WsListeCategorie n'a pas été trouvée. 
    Désérialise(MonTableau.tabCatego, bbuf, psdJSON)
     
    TotalLigne=MonTableau.tabCatego.Occurrence()
     
    POUR I=1 _À_  TotalLigne
     
    	ListeAjoute(COMBO_Categorie,MonTableau.tabCatego[I].Sdesignation+...
    	gLien(MonTableau.tabCatego[I].ID))
    	Multitâche(-1)
    FIN
    Nom : image_2023-05-11_091919166.png
Affichages : 77
Taille : 8,9 Ko


    Cote WS
    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
     
    //Dclaration globale
    STCatego	est une Structure
    	ID						est un entier sur 8
    	Sdesignation			est un string
    FIN
    stTabCategorie est une Structure
    	tabCatego est un tableau de STCatego
    FIN
    PROCÉDURE WsListeCategorie(sDossier est une chaîne)  : Buffer
    wsReqListeCategorie.ExécuteRequête(hRequêteDéfaut)
    HLitPremier(wsReqListeCategorie)
     
    MonTableau est un stTabCategorie
    TANTQUE PAS HEnDehors(wsReqListeCategorie )
    	TableauAjouteLigne(MonTableau.tabListeCategorie,[wsReqListeCategorie.IDFCatégorieArticle,wsReqListeCategorie.Categorie])
    	HLitSuivant(wsReqListeCategorie)
    FIN
     
    bufNbuff est Buffer
     
    Sérialise(MonTableau.tabListeCategorie, bufNbuff, psdJSON)
     
    RENVOYER bufNbuff

  6. #6
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 267
    Points
    5 267
    Billets dans le blog
    1
    Par défaut
    Dans ton prototype, tu à un paramètre de type chaîne (que tu n'utilises jamais) et tu passes un entier.
    MonTableau.tabCatego et MonTableau.tabListeCategorie me laissent songeur. Utiliser un tableau de structure suffit, pourquoi utiliser une structure de tableau de structure.
    Pourquoi ne pas lier ta combo à tabMonTableau ?
    As-tu inclus tous les éléments dans ta création ("Éléments accessibles")?
    As tu mis a jour ton serveur avec la modif ?
    Ton serveur est il démarré ?
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

Discussions similaires

  1. Transmettre une variable tableau
    Par WagaSeb dans le forum Général VBA
    Réponses: 22
    Dernier message: 03/12/2006, 11h11
  2. [PHP-JS] Affecter une variable php depuis le JS
    Par PedroBD dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/08/2006, 11h17
  3. Réponses: 11
    Dernier message: 08/02/2006, 16h59
  4. [Tableaux] récuperer une variable tableau passé par URL
    Par molesqualeux dans le forum Langage
    Réponses: 2
    Dernier message: 23/12/2005, 01h12
  5. Acces à une variable-tableau de PHP
    Par Erwan21 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/02/2005, 13h55

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