PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → opération dans les colonnes d'une table !!!
opération dans les colonnes d'une table !!!
Débuté par dudu, 21 jan. 2022 07:28 - 16 réponses
Membre enregistré
17 messages
Posté le 21 janvier 2022 - 07:28
bonjour,

je n'arrive pas à trouver la solution à mon petit problème,

j'essaie de faire une petite application (trésorerie), je m'explique :

une colonne débit
100€
55 €
/ une colonne crédit
20€
/ une colonne solde
100€
45€
65€

à côté de cette table

je mets 3 champs correspondant à chacune des colonnes
sai_débit
sai_crédit
sai_solde


je voudrais que dans la colonne solde à chaque ligne ajouter, il calcule au fur et à mesure que je rentre une nouvelle opération.

En vous remerciant.
Membre enregistré
17 messages
Posté le 23 janvier 2022 - 12:52
Bonjour personne ne peut répondre à ma question où est-ce que je me suis mal exprimé et personne ne comprend ce que je veux faire en vous remerciant
Membre enregistré
328 messages
Popularité : +8 (10 votes)
Posté le 23 janvier 2022 - 13:02
Bonjour.

Il faut créer une procédure globale a ta fenetre : solde_ligne
Dans cette procedure tu fais col_solde = col_credit-col_debit

Tu appelle cette procedure en sortie de chaque colonne (debit credit).

Tu peux créer une procédure solde_general dans laquelle tu fais la somme de toutes tes lignes ou encore le faire directement via la table (ligne de somme)

Champs sai debit credit et solde sont inutiles
Membre enregistré
328 messages
Popularité : +8 (10 votes)
Posté le 23 janvier 2022 - 13:17
Je corrige ma réponse.

Si tes champs sai_débit sai_crédit sai_solde sont là pour stocker les totaux, alors tu les alimentes via la procédure solde_général
Membre enregistré
17 messages
Posté le 23 janvier 2022 - 13:29
Bonjour Merci de te pencher sur mon problème le but des champs de pouvoir enregistrer de nouvelles opérations soit sur crédit soit sur débit mais aussi de pouvoir les modifier ça je sais le faire c'est de pouvoir avoir le solde chaque ligne que je ne connaissais pas je vais essayer de faire ce que tu me proposes
Membre enregistré
190 messages
Popularité : +12 (12 votes)
Posté le 23 janvier 2022 - 14:22
Bonjour

C'est un tout petit peu plus compliqué que cela car j'imagine que vous souhaitez le solde progressif (le solde d'une ligne n'a aucun intérêt en fait)

Du coup l'idée de la procédure est bonne mais pour le calcul du solde de la ligne I vous devez tenir compte du solde de la ligne I-1.
Du coup vous devez balayer la table depuis le début et, si le N° de ligne est > 1 (et seulement si) prendre en compte le solde de la ligne précédente.

Pour balayer les ligne de la table vous pouvez utiliser une syntaxe du style
POUR TOUTE LIGNE I DE MaTable
// Dans cette boucle I va progresser de 1 au fur et à mesure du parcours des lignes
FIN

Pour atteindre le champ Solde de la ligne I vous pouvez utiliser la syntaxe

MaTable[I].Solde

Essayez par vous même de créer ce code

--
Côme, Clairinfo
Membre enregistré
17 messages
Posté le 23 janvier 2022 - 17:38
je débute donc ne vous moqué pas !!!



j'avais essayer avec sa!!!




j'ai essayé avec se que vous me proposer mais je pense que il y a quelques chose que je ne fait pas bien

inserer dans la procédure de la fenêtres :

POUR TOUTE LIGNE I DE TABLE_T_compt
// Dans cette boucle I va progresser de 1 au fur et à mesure du parcours des lignes
SI TABLE_T_compt[I].COL_Solde>1 ALORS
COL_Solde=COL_Crédit-COL_Débit
SINON
SORTIR
FIN
FIN
Membre enregistré
286 messages
Popularité : +24 (28 votes)
Posté le 23 janvier 2022 - 18:35
Bonsoir
L'idéal serait par commencer par suivre le guide d'auto-formation ;-)
Bien cordialement
Membre enregistré
190 messages
Popularité : +12 (12 votes)
Posté le 23 janvier 2022 - 18:35
C'est le numéro de ligne (donc la variable I ) que l'on teste pour savoir si l'on est sur la première ligne de la table ou pas.

L'objectif est, comme si vous deviez faire le calcul à la main, de distinguer le calcul pour la première ligne (il n'y a pas de solde antérieur à prendre en compte) et le calcul pour les autre lignes.

Comprenez-vous le code que vous avez entré ? Il n'est pas cohérent avec l'objectif.

--
Côme, Clairinfo
Membre enregistré
3 889 messages
Popularité : +227 (347 votes)
Posté le 23 janvier 2022 - 19:43
Bonjour,
Gemini1961 a écrit :
Bonsoir
L'idéal serait par commencer par suivre le guide d'auto-formation

Avant l'auto-formation, il faut surtout relire les cours de programmation générales, entre autre les cors d'algorithmique. cf :
Côme a écrit :
L'objectif est, comme si vous deviez faire le calcul à la main, de distinguer le calcul pour la première ligne (il n'y a pas de solde antérieur à prendre en compte) et le calcul pour les autre lignes.


--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
17 messages
Posté le 23 janvier 2022 - 21:23
Bonsoir j'ai trouvé une solution c'est peut-être pas la meilleur mais sa fonctionne en mettant la table en mémoire

affichage d'une ligne et dans sortie de ligne pour les modifications quand pensé vous ?

SI TABLE_T_compt=1 ALORS

// ou tout autre solde de départ (report à nouveau, etc...)
COL_Solde=COL_Crédit-COL_Débit

SINON

COL_Solde=COL_Solde[TABLE_T_compt-1]+COL_Crédit-COL_Débit

FIN
Posté le 23 janvier 2022 - 23:08
ca fonctionnera pour les ajouts de ligne, mais pas pour les modifs...
Dans le cas d'une modif, il faut recalucler le solde de toutes les lignes suivantes aussi
Membre enregistré
17 messages
Posté le 24 janvier 2022 - 11:32
bonjour merci qu'est ce que tu propose pour les modif stp
Membre enregistré
450 messages
Popularité : +31 (43 votes)
Posté le 24 janvier 2022 - 12:32
Bonjour

Il y'a la possibilité dans une colonne de ta table d'activer le calcul automatique ca se fait en un clic , donc il te suffit d'activer ce calcul pour chacune de tes 3 colonnes et tu aura la somme de chacune de tes colonnes.

cdlt

DG
Posté le 24 janvier 2022 - 15:30
il faut sérieusement que tu commence par suivre le cours d'auto formation
Membre enregistré
190 messages
Popularité : +12 (12 votes)
Posté le 24 janvier 2022 - 17:31
Vous créez une procédure locale :
Procedure Maj_Solde()
POUR TOUTE LIGNE I DE TABLE_Test
SI I = 1 ALORS
TABLE_Test[I].COL_Solde = TABLE_Test[I].COL_Debit - TABLE_Test[I].COL_Credit
SINON
TABLE_Test[I].COL_Solde = TABLE_Test[I-1].COL_Solde + TABLE_Test[I].COL_Debit - TABLE_Test[I].COL_Credit
FIN
FIN

Vous appelez cette procédure en modification de COL_Debit, en modification de COL_Credit et, en suppression de ligne

SI la colonne Solde n'est pas stockée dans la table alors à l'ouverture de la fiche vous remplissez la table puis vous appelez Maj_Solde().

--
Côme, Clairinfo
Membre enregistré
190 messages
Popularité : +12 (12 votes)
Posté le 24 janvier 2022 - 19:30
J'ai oublié de préciser que ce type de code nécessite une table mémoire ou une table fichier chargée en mémoire

--
Côme, Clairinfo