|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
| Inicio → WINDEV 2025 → [WD 24] WebService - Mettre le résultat d'une requête SQL dans une variable json |
| [WD 24] WebService - Mettre le résultat d'une requête SQL dans une variable json |
| Iniciado por Gurdarr, 21,abr. 2020 18:30 - 7 respuestas |
| |
| | | |
|
| |
Miembro registrado 237 mensajes |
|
| Publicado el 21,abril 2020 - 18:30 |
Bonjour à tous
Comment ferriez vous pour renvoyer des données depuis un web service au format JSON de manière la plus rapide sans connaitre a l'avance les données à afficher ni les condition de filtre ? l'utilisateur peux réclamer que certaines rubriques de la requête ou toutes et peux spécifier des conditions pour limiter le nombre de résultat sur la requête.
Je souhaitai construire ma requete sql en fonction des demandes de l'utilisateur et divers contrôles et lui renvoyer les résultats au formats json.
j'ai trouvé HExporteJSON() mais cela génère un fichier en local et j'ai peur de perdre trop de temps à générer un fichier physique pour ensuite le recharger en mémoire et l'envoyer
est ce que VariantVersJSON() fonctionne avec une variable de type source de données ou requete sql ?
ou dois-je parcourir ma requete et faire un HEnregistrementVersJSON() pour chaque ligne ?
Merci. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 558 mensajes |
|
| Publicado el 22,abril 2020 - 10:36 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.362 mensajes |
|
| Publicado el 22,abril 2020 - 12:10 |
Bonjour, Une solution est de créer un tableau de structures (ou de classes)
STLigneRequete est structure FIN gtabResRequête est tableau de STLigneRequete sResRequeteJSON est une chaîne ANSI
HExécuteRequête(REQ_MaRequete) FichierVersTableau(gtabResRequête,REQ_MaRequete)
Sérialise(gtabResRequête, sResRequeteJSON, psdJSON)
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 237 mensajes |
|
| Publicado el 23,abril 2020 - 12:36 |
Tout d'abord merci Ralph IGCI et Voroltinquo
Voroltinquo, j'ai essayer avec les structures comme tu me l'a indiqué et effectivement ça fait exactement ce que je veux soit charger en mémoire ma requete dans un format que je peux exporter. le hic c'est que je peux pas construire ma structure dynamiquement enfin je crois pas que ce soit possible ^^.
Du coups j'ai regardé un peu plus ce que disait Ralph IGCI soit le json_object et je suppose le type de variable json de windev (sinon c'est que je ne t'ai pas compris RALPH IGCI)
J'ai donc mélangé vos deux propositions et j'ai fait ceci (je fais peut être des étapes inutiles)
ST_SS_RESULTAT est une structure Code est un entier Libelle est une chaîne FIN
ST_RESULTAT_LISTE est une structure Contenu est un tableau de JSON Resultat est une ST_SS_RESULTAT FIN
Procedure Liste_SQL(sP_MaRequete_SQL est une chaîne) vSortie est un Variant R est un ST_RESULTAT_LISTE QUAND EXCEPTIONEXCEPTION DANS sdMaR est une Source dede Données SI HExécuteRequêteSQL(sdMaR,hRequêteSansCorrectionHF,sP_MaRequete_SQL) ALORS FichierVersTableau(R.Contenu,sdMaR) HAnnuleDéclaration(sdMaR) R.Resultat.Code = 0 R.Resultat.Libelle = "" SINON R.Resultat.Code = 9 R.Resultat.Libelle = "Erreur dans l’exécution de la requête SQL ! "+HErreurInfo(hErrMessage) FIN FAIRE R.Resultat.Code = 9 R.Resultat.Libelle = "Erreur dans l’exécution de la requête SQL ! "+ExceptionInfo(hErrMessage) FIN vSortie = R
RENVOYER VariantVersJSON(vSortie ) FIN
La ou je me pose des questions c'est sur la gestion de la réception Je souhaitait réutiliser ma strucuture ST_RESULTAT_LISTE mais je peux pas faire :
sMonResultat est une chaîne = Liste_SQL(sMaRequete_SQL) vResulta est un Variant = JSONVersVariant(sMonResultat) Rfinal est un ST_RESULTAT_LISTE = vResultat |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.362 mensajes |
|
| Publicado el 23,abril 2020 - 13:19 |
Gurdarr a écrit :
j'ai essayer avec les structures comme tu me l'a indiqué et effectivement ça fait exactement ce que je veux soit charger en mémoire ma requete dans un format que je peux exporter. le hic c'est que je peux pas construire ma structure dynamiquement enfin je crois pas que ce soit possible ^^.
On ne peut pas avec une structure mais on peut avec une classe. Il "suffit" de récupérer les définitions des colonnes de ta requête et de transformer ça en classe cf : https://doc.pcsoft.fr/?6010015, https://doc.pcsoft.fr/?1000019333
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 237 mensajes |
|
| Publicado el 23,abril 2020 - 15:28 |
Je savais que l'on pouvait récupérer les informations d'une classe mais je ne savais pas que l'on pouvait créer des classes entièrement par programmation
cela m’intéresse beaucoup surtout si derrière je peux mapper ma classe ou mon tableau sur une table en affichage sur le poste final du client.
j'ai regardé tes deux liens mais nulle part il est montré que l'on peut créer ou rajouter des membres dans la définition puis de réintégrer la définitions dans un objet.
Merci encore Voroltinquo |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 558 mensajes |
|
| Publicado el 24,abril 2020 - 09:31 |
| Regarde l'exemple WD JSON si tu es en 24 ou 25, c'est plus simple. JSON_OBJET te permet de ne pas faire les tableau de structure. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 237 mensajes |
|
| Publicado el 24,abril 2020 - 15:33 |
Merci Ralph ICGI
J'ai regardé JSON_OBJET et est-il possible de garder le type de la rubrique ? |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|