|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Remplissage dynamiquement d'une table par programmation |
Débuté par BGael, 20 nov. 2019 09:42 - 8 réponses |
| |
| | | |
|
| |
Membre enregistré 1 message |
|
Posté le 20 novembre 2019 - 09:42 |
Bonjour tout le monde.
J'aimerai savoir s'il n'est pas possible d'utiliser une fonction plus adaptée que TableAjouteLigne pour le cas d'une table à plusieurs colonnes (dont on connait pas les noms et le nombre colonnes au préalable). Quelque chose du genre
TANTQUE PAS HEnDehors(Source) table.COL1=Source.champ1 table.COL2=Source.champ2 ... TableAjouteLigne(table) HLitSuivant(Source) FIN
-- BKGMessage modifié, 20 novembre 2019 - 09:42 |
| |
| |
| | | |
|
| | |
| |
Posté le 20 novembre 2019 - 09:52 |
sRow = Product.Reference + TAB + Product.ProdCap + TAB + Product.Price TableAdd(TABLE_Products, sRow) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 messages |
|
Posté le 20 novembre 2019 - 09:59 |
Bonjour,
Je pense que le mieux c'est d'utiliser TableAjouteLigne mais d'une autre façon, si par exemple vous ne connaissez pas vos colonnes à l'avance vous pouvez jouer sur l'indirection pour régler ce problème
nIndice est un entier nIndiceColonne est un entier UneColonne est un Champ
TANTQUE PAS HEnDehors(Source) nIndiceColonne = 0 nIndice = TableAjouteLigne(TABLE) SI nIndice <> -1 ALORS POUR nColonne = 1 _A_ TableOccurrence(TABLE,toColonne) nIndiceColonne++ UneColonne <- TableEnumèreColonne(TABLE, nColonne) {TABLE..Nom + "[" + nIndice + "]" + "." + UneColonne..Nom,indChamp} = {Source..Nom + "." + "champ" + nIndiceColonne,indRubrique} FIN FIN HLitSuivant(Source) FIN
-- Cordialement, Corentin Domanski.Message modifié, 20 novembre 2019 - 10:02 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 845 messages Popularité : +227 (347 votes) |
|
Posté le 20 novembre 2019 - 10:14 |
Bonjour, TableAjoute fait aussi très bien le boulot dans ce cas
sContenuLigne est chaîne
sContenuLigne=ContenuCol1+TAB+ContenuCol2+TAB+...
TableAjoute(TABLE_TableARemplir,sContenuLigne)
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 352 messages Popularité : +12 (18 votes) |
|
Posté le 20 novembre 2019 - 11:03 |
Bonjour. Le soucis de la fonction TaleAjoute, c'est lorsqu'une donnée contient déjà le caractère de tabulation, qui provoque un décalage dans les colonnes (déjà vécu). Une autre façon de procéder serait en faisant un binding sur une variable globale, de type tableau d'objets d'une classe à définir au niveau du projet. L'avantage en procédant ainsi, plus besoin de se soucier dans l'ordre des colonnes, le wlangage sait le gérer. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 messages |
|
Posté le 20 novembre 2019 - 12:03 |
ROMULUS001 a écrit :
Bonjour. Le soucis de la fonction TaleAjoute, c'est lorsqu'une donnée contient déjà le caractère de tabulation, qui provoque un décalage dans les colonnes (déjà vécu). Une autre façon de procéder serait en faisant un binding sur une variable globale, de type tableau d'objets d'une classe à définir au niveau du projet. L'avantage en procédant ainsi, plus besoin de se soucier dans l'ordre des colonnes, le wlangage sait le gérer.
Le TableAjoute() a aussi le défaut d'être moins lisible en terme de lecture de code et moins maintenable si les colonnes évoluent avec le temps. En revanche c'est beaucoup plus court à écrire que mon exemple c'est indéniable.
-- Cordialement, Corentin Domanski. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 352 messages Popularité : +12 (18 votes) |
|
Posté le 20 novembre 2019 - 14:10 |
Il y a une variante dans l'utilisation de TableAjoute / TableAjouteLigne qui peut être utilisée, personnellement, je n'aime pas m'en servir mais elle marche très bien :
TableAjoute(TABLE_MaTable) TableAjoute .COL_Col1[TableAjoute ..Occurrence]="valeur 1" TableAjoute .COL_Col2[TableAjoute ..Occurrence]="valeur 2" ... |
| |
| |
| | | |
|
| | |
| |
Posté le 20 novembre 2019 - 14:38 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 messages |
|
Posté le 20 novembre 2019 - 14:51 |
ROMULUS001 a écrit :
Il y a une variante dans l'utilisation de TableAjoute / TableAjouteLigne qui peut être utilisée, personnellement, je n'aime pas m'en servir mais elle marche très bien : TableAjoute(TABLE_MaTable) // ou TableAjouteLigne(TABLE_MaTable) TableAjoute .COL_Col1[TableAjoute ..Occurrence]="valeur 1" TableAjoute .COL_Col2[TableAjoute ..Occurrence]="valeur 2" ...
Je ne connaissais pas cette syntaxe là ! Le plus souvent je passe par un entier qui contient l'indice de ma ligne ajoutée, concrètement c'est exactement pareil.
-- Cordialement, Corentin Domanski. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|