PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → somme d'une colonne table fichier
somme d'une colonne table fichier
Débuté par defonpre.alain, 17 jan. 2005 16:40 - 4 réponses
Posté le 17 janvier 2005 - 16:40
WinDev 5.5
Bonjour à tous et merci de votre aide, voici mon soucis :

Eléments

1 Table fichiers nomée : "MaTable" (avec des colonnes fichiers et d'autres calculées)
1 Champ d’affichage nomée : "AffichTotalHt"

Une des colonne nomée "Ht" est de type calculée, je souhaite afficher le total de cette colonne dans un champ nomé "AffichTotalHt"

J'ai saisi le code ci-dessous dans la table (affichage d’une ligne de la table) :
---------------------------------------------
i est un entier
somme est un reel
pour i=1 à tableoccurrence("MaTable",1)
somme = somme + Ht[i]
fin
AffichTotalHt = somme
----------------------------------------------

Cela fonctionne, mais le calcul s’arrête à ce qui est visible dans la table (à l’ecran)
Il faut être placer sur le dernier enregistrement de la table pour que total de tous les enregistrements de la colonne Ht soient pris en compte.
Ma question: comment faire pour que le calcul se fasse sur la totalité des enregistrements de la table (enregistrements visibles et hors de vision) quelque soit la position de l'enregistrement selectionné.

Par avance, je vous remercie de bien vouloir, si cela est possible, me présenter la boucle de traitement précise (parenthèses, guillemets, points et virgules) car j'ai déja essayé diverses boucles et cela ne fonctionnent toujours pas.

Alain
Posté le 17 janvier 2005 - 17:12
Essayez ceci :

I,Z sont des entiers; Somme est un reel
I=1; Z=tableoccurrence(MaTable)+1
Tantque I<Z
Somme=Somme+Ht[I]; I++
FIN
AffichTotalHT=Somme

Cela donne quoi?
Posté le 17 janvier 2005 - 22:37
Thierry,

Tout d'abbord, merci de votre aide précieuse, votre code accelére de façon significative l'affichage du résultat (AffichTotalHT=Somme) et il me servira à l'avenir, mais après essais, le résultat se fait toujours sur les enregistrements présents à l'écran.

Dans cette table, à l'ouverture de la fenêtre il y a 22 enregistrements à l'écran, mais j'en est saisis 23 en tout.
J'ai complété de votre code pour compter le nombre d'enregistrements total de la table en ajoutant en sortie de boucle:

//I,Z sont des entiers; Somme est un reel
//I=1; Z=tableoccurrence(MaTable)+1
//Tantque I
// Somme=Somme+Ht[I]; I++
//FIN
//AffichTotalHT=Somme
-------------------------------------------------
NbEnregis = Z
-------------------------------------------------
et du coup, je connais le nombre d'enregistremets, soit 23, ça c'est bon, y'a du progrés !!
Auriez-vous une autre idée complémentaire, vraiment ça m'arrangerai ?
D'avance merci.

Alain
Posté le 18 janvier 2005 - 00:14
Bonsoir
As tu essayé d ajouter un tableselectplus dans ta boucle
I,Z sont des entiers; Somme est un reel
I=1; Z=tableoccurrence(MaTable)+1
Tantque I
Somme=Somme+Ht[I]; I++

TableSelectPlus(MaTable,I)
FIN
AffichTotalHT=Somme

Voir également le TablePosition
En espérant t'avoir aiguillé
Bon Développement

"alain" <defonpre.alain@laposte.net> a écrit dans le message de news:
41ec178a@news.pcsoft.fr...
Thierry,

Tout d'abbord, merci de votre aide précieuse, votre code accelére de façon

significative l'affichage du résultat (AffichTotalHT=Somme) et il me servira
à l'avenir, mais après essais, le résultat se fait toujours sur les
enregistrements présents à l'écran.

Dans cette table, à l'ouverture de la fenêtre il y a 22 enregistrements à

l'écran, mais j'en est saisis 23 en tout.
> J'ai complété de votre code pour compter le nombre d'enregistrements total
de la table en ajoutant en sortie de boucle:

//I,Z sont des entiers; Somme est un reel
//I=1; Z=tableoccurrence(MaTable)+1
//Tantque I
// Somme=Somme+Ht[I]; I++
//FIN
//AffichTotalHT=Somme
-------------------------------------------------
NbEnregis = Z
-------------------------------------------------
et du coup, je connais le nombre d'enregistremets, soit 23, ça c'est bon,

y'a du progrés !!
Auriez-vous une autre idée complémentaire, vraiment ça m'arrangerai ?
D'avance merci.

Alain
Posté le 18 janvier 2005 - 09:39
Bjr,

ta colonne HT est-elle renseignée lors de l'ajout d'une ligne dans la table ou est-elle calculée lors de l'affichage d'une ligne ?
Si c'est le second cas, c'est normal que ton total ne se fasse que sur les lignes déjà affichées, donc celle dont la colonne HT est renseignée

A+