PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → [WD 25] WebService - Remplir Table via JSON
[WD 25] WebService - Remplir Table via JSON
Iniciado por Gurdarr, 24,abr. 2020 10:52 - 2 respuestas
Miembro registrado
237 mensajes
Publicado el 24,abril 2020 - 10:52
Bonjour,

Je repose mon message /question car je n'ai plus accès au premier.

Je voulais savoir si il y avait une autre méthode que de faire un pour tout pour remplir une table depuis une chaine JSON reçu par un WEBService

En gros un équivalent de ConstruitTableFichier qui est plus rapide qu'un pour tout.

pour le moment je me suis créer les deux fonction suivantes mais j'aimerai les améliorer pour gagner en vitesse.
MaVariable JSON contient deux tableaux
un pour les données et un pour le format
Procedure TableauVersTable(p_Table est un Champ,p_Tableau)
sMaLigne est une chaîne
vMonVar est un Variant
TableSupprimeTout(p_Table)
SI p_Tableau..Occurrence > 0 ALORS
Sablier(Vrai)
p_Table..AffichageActif = Faux
POUR n = 1 _À_ p_Tableau..Occurrence
vMonVar = p_Tableau[n]
POUR TOUT Colonne de vMonVar..Membre
sMaLigne += Colonne +TAB
FIN
TableAjoute(p_Table,sMaLigne)//le dernier TAB est ignoré car il n'y a pas de colonne
sMaLigne = ""
FIN
p_Table..AffichageActif = Vrai
Sablier(Faux)
FIN

Procedure ConstruitTableTableau(p_Table est un Champ,p_Tableau,p_Tableau_Format_HFSQL)
vMonVar est un Variant
col est un Champ
sNomColonne est une chaîne
nTypeHFSQL est un entier
SI p_Tableau..Occurrence > 0 ALORS
TableSupprimeTout(p_Table)

//on surprime les colonnes de la table
POUR nColonne = TableOccurrence(p_Table..NomComplet, toColonne) _À_ 1 PAS -1
col <- TableEnumèreColonne(p_Table..NomComplet, nColonne)
ChampSupprime(col..NomComplet)
FIN


vMonVar = p_Tableau[1]
POUR TOUT Colonne de vMonVar..Membre
sNomColonne = Remplace(Colonne..Nom," ","_")
col <- ChampCrée(p_Table..NomComplet+".COL_"+Remplace(Colonne..Nom," ","_"),typColonne)
//on indique le bon format de la colonne
nTypeHFSQL = p_Tableau_Format_HFSQL[sNomColonne]
iFormateColonne(nTypeHFSQL)
col..Titre = Colonne..Nom
FIN
FIN


PROCEDURE INTERNE iFormateColonne(nP_TypeHFSQL est un entier)
SELON nP_TypeHFSQL
CAS 2,15,16,23,30,32,33
col..TypeSaisie = typSaisieTexte
CAS 10,14 //Date
col..TypeSaisie = typSaisieDate
col..MasqueAffichage = "JJ/MM/AAAA"
CAS 11
col..TypeSaisie = typSaisieHeure
col..MasqueAffichage = "HHh MMmin SS CC"
CAS 24,25
col..TypeSaisie = typSaisieTexte
col..MasqueAffichage = "JJ/MM/AAAA HHh MMmin SS CC"
CAS 12,1,3,4,5,12,19,20 //entier
col..TypeSaisie = typSaisieNum
col..MasqueAffichage = "999 999 999;-999 999 999[Rouge];0;<NULL>"
CAS 6,7,13,31
col..TypeSaisie = typSaisieNum
col..MasqueAffichage = "999 999 999,99;-999 999 999,99[Rouge];0;<NULL>"
CAS 17
col..TypeSaisie = typSaisieMonétaire
col..MasqueAffichage = maskMonétaireSystème
CAS 27
col..TypeSaisie = typSaisieNum //merdouille j'ai pas la coche
CAS 18,21 //mémo binaire, mémo Image,mémo Son, mémo OLE ou mémo binaire autre
AUTRE CAS
col..TypeSaisie = typSaisieTexte
FIN
FIN


Le code d'appel
sP_ParamJson est une chaîne = VariantVersJSON(v)
sMonResultat est une chaîne = CLIENT_LISTER(sP_ParamJson)
vVResulta est un Variant = JSONVersVariant(sMonResultat)


SI vVResulta.erreur.Code = 0 ALORS
//on contruit la table en fonction du tableau contenant les résultat
ConstruitTableTableau(TABLE_SansNom1,vVResulta.Resultats,vVResulta.Format)
//on charge le tableau avec les résultat
TableauVersTable(TABLE_SansNom1,vVResulta.Resultats)

TableAjuste(TABLE_SansNom1)
SINON
//erreur
Erreur(vVResulta.erreur.Libelle)
FIN
Miembro registrado
160 mensajes
Publicado el 24,abril 2020 - 12:01
L’assemblage .net "Newtonsoft.Json" va te faciliter énormément la vie
Miembro registrado
237 mensajes
Publicado el 24,abril 2020 - 16:00
Ma curiosité est plus que piqué, merci freak per

Mais
je suis allé sur https://www.newtonsoft.com/json
puis ensuite j'ai installer Nuget fait la magnifique ligne de commande en powershell "Install-Package Newtonsoft.Json"
et je me retrouve pas avec la même version ^^

et surtout je n'ai pas l'assemblage qui apparait dans la liste dans Windev