PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → compilation dynamique et Webservice
compilation dynamique et Webservice
Iniciado por alexis.augem, 29,nov. 2018 17:24 - 1 respuesta
Publicado el 29,noviembre 2018 - 17:24
Bonjour,
Je voudrais déclarer une structure dans un web-service sans connaitre son type lors de la compilation.
La solution que j'envisage est de procéder par compilation dynamique.
Voici mon code :

sCode = [
STConnexionIni est structure
sSectionBase est une chaîne
sUtilisateur est une chaine
sServeur est une chaine
sBaseDeDonnees est une chaine
sProvider est une chaine
sMotDePasseCrypte est une chaine
nAuthentificationWindows est un entier
sUtilisateurEnCours est une chaîne
FIN

STErreur est une structure
nCode est un entier
sLibelle est une chaine
ListeIdElements est une chaine
FIN

STClientListeEntreeSortie est une structure
stConnexion est une STConnexionIni
clListe est un MTableauDeclient
stErreur est un STErreur
FIN

sSortie est une chaine

stSortie est un STClientListeEntreeSortie

Sérialise(stSortie,sSortie,psdJSON)

RENVOYER sSortie
]

sRésultat est une chaîne
sRésultatCompile est une chaîne
sRésultatCompile = Compile("Proc_dynamique", sCode)
SELON sRésultatCompile
CAS "" : sRésultat = ExécuteTraitement("Proc_dynamique", trtProcedure)
CAS "ERR" : sRésultat = "Compilation impossible." + RC + ErreurInfo()
AUTRE CAS : sRésultat = "3" + sRésultatCompile
FIN
RENVOYER sRésultat


Mon besoin vient du fait que je ne connais pas à l'avance la structure STClientListeEntreeSortie qui sera alors remplacée par une variable mais pour faire mes tests je l'ai fourni en dur.

En test, dans l'éditeur, tout se passe correctement et ma structure est correctement allouée, sérialisée et renvoyée.

Lorsque je déploie le web-service, j'obtiens un message d'erreur m'indiquant que la fonction "ExécuteTraitement" aurait du renvoyer une valeur... Je passe donc bien par le cas "" qui prouve que la compilation s'est bien passée.

J'ai essayé plusieurs choses pour détecter le problème et la ligne qui gène l’exécution en web-service est la ligne
"stSortie est un STClientListeEntreeSortie" sans cette ligne je n'obtiens pas d'erreur.

Avez-vous une piste ?

Bon dev

Alexis
Publicado el 30,noviembre 2018 - 08:53
Bonjour

Regarde la fonction jsonversvariant qui va te créer une structure json qui va te permettre d'accéder directement à tes données

Bon Dev

Marc Fastré
www.marc-fastré.be