|
| Inicio → WINDEV 2025 → Remplir un champ table a partir d'un fichier avec rubriques inconnues |
| Remplir un champ table a partir d'un fichier avec rubriques inconnues |
| Iniciado por j.lachaud, 19,mar. 2019 10:33 - 4 respuestas |
| |
| | | |
|
| |
| Publicado el 19,marzo 2019 - 10:33 |
Bonjour,
Je cherche a mettre dans un champ table le résultat d'une requête ayant un nombre de colonnes aléatoire.
J'effectue un HExecuteRequeteSQL sur un fichier externe. Celui ci ne me renvoi pas toujours le même nombre de colonnes. J'utilise donc un TableConstruitFichier(MaRequête). Seulement cette fonction prend beaucoup de temps et peut mettre 30 seconde pour 100 lignes. Je cherche donc un moyen d'optimiser ma table.
Y a t-il un autre moyen de remplir un champ table a partir d'un fichier dont on ne connais pas le nombre de rubriques ?
Cordialement |
| |
| |
| | | |
|
| | |
| |
| Publicado el 19,marzo 2019 - 13:42 |
Bonjour,
Il y a une possibilité :
Soit une table TABLE_resultat avec une colonne COL_ancrage invisible. Soit une source de données resultat qui contiendra le résultat de la requête SQL
Procedure lproc_maj_resultat_light( _sql est une chaîne )
i, iMax est un entier sql est une chaîne rubriques est un tableau de 0 chaînes c est un Champ
TABLE_resultat..AffichageActif = Faux TABLE_resultat..FichierParcouru = "" iMax = TableOccurrence( TABLE_resultat, toColonne ) POUR i = iMax À 1 PAS -1 c <- TableEnumèreColonne( TABLE_resultat, i ) SI c..Nom <> COL_ancrage..Nom ALORS ChampSupprime( c..Nom ) FIN
sql = RTFVersTexte( _sql ) SI HExécuteRequêteSQL( resultat, sql ) ALORS HLitPremier( resultat ) SI PAS HEnDehors( resultat ) ALORS ChaîneVersTableau( HListeRubrique( resultat ), rubriques ) POUR TOUTE Rubrique de Rubriques c <- ChampCrée( TABLE_resultat..Nom + ".COL_" + Rubrique , typColonne ) c..Libellé = Rubrique c..LiaisonFichier = resultat + "." + Rubrique c..Visible = Vrai FIN TABLE_resultat..FichierParcouru = resultat TableAffiche( TABLE_resultat, taInit ) TableAjuste( TABLE_resultat ) FIN FIN
TABLE_resultat..AffichageActif = Vrai
Le code crée par programmation les colonnes de la table et les lient avec les rubriques du résultat de la requête. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 134 mensajes |
|
| Publicado el 19,marzo 2019 - 13:58 |
Bonjour,
Mon message a du se perdre, je reposte.
Le principe est de - mettre une table TABLE_resultat avec une colonne invisible COL_Ancrage (on ne peut pas créer de table sans colonne...) - créer par programmation les colonnes en fonctions de la source de données qui contient le résultat de la requête est de les lier avec les rubriques de cette source de données.
Donc en gros ça donne ça :
resultat est une Source dede Données
Procedure lproc_maj_resultat_light( _sql est une chaîne )
i, iMax est un entier sql est une chaîne rubriques est un tableau de 0 chaînes c est un Champ
TABLE_resultat..AffichageActif = Faux TABLE_resultat..FichierParcouru = "" iMax = TableOccurrence( TABLE_resultat, toColonne ) POUR i = iMax À 1 PAS -1 c <- TableEnumèreColonne( TABLE_resultat, i ) SI c..Nom <> COL_ancrage..Nom ALORS ChampSupprime( c..Nom ) FIN
sql = _sql SI HExécuteRequêteSQL( resultat, sql ) ALORS HLitPremier( resultat ) SI PAS HEnDehors( resultat ) ALORS ChaîneVersTableau( HListeRubrique( resultat ), rubriques ) POUR TOUTE Rubrique de Rubriques c <- ChampCrée( TABLE_resultat..Nom + ".COL_" + Rubrique , typColonne ) c..Libellé = Rubrique c..LiaisonFichier = resultat + "." + Rubrique c..Visible = Vrai FIN TABLE_resultat..FichierParcouru = resultat TableAffiche( TABLE_resultat, taInit ) TableAjuste( TABLE_resultat ) FIN FIN
TABLE_resultat..AffichageActif = Vrai |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.321 mensajes |
|
| Publicado el 19,marzo 2019 - 15:01 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 134 mensajes |
|
| Publicado el 19,marzo 2019 - 16:03 |
Jean-Pierre a écrit :
Bonjour Jean-Pierre,
Je n'ai jamais utilisé cette fonction, elle ne nécessite pas d'avoir déjà les colonnes créées dans la table ? Il n'y a pas un risque de saturation mémoire par rapport à une table avec un remplissage en Fichier / Requête ? |
| |
| |
| | | |
|
| | | | |
| | |
|