Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Calcul automatique du Solde

20 réponses
Avatar
Réal Phil
Bonjour,

Le contexte:

Une table fichier avec colonnes reli=E9es dont une qui contient un
Montant.
Une derni=E8re colonne calcul=E9e non reli=E9e (bien s=FBr) contenant le So=
lde
cumul=E9.

En th=E9orie, le calcul suivant plac=E9 dans l'affichage d'une ligne
devrait fonctionner pour calculer et afficher le Solde cumulatif dans
la colonne Solde;

Nouv_Solde+=3DMontant[MoiM=EAme..Valeur]
Solde[MoiM=EAme..Valeur]=3DNouv_Solde

Les probl=E8mes

1. Le Solde ne se calcule pas correctement.
2. Comme le calcul est situ=E9 dans l'affichage d'une ligne, quand on
remonte dans la table, le Solde continue de se calculer ind=E9finiment.
C'est normal mais pas souhaitable.
3. Si on corrige un Montant au millieu de la table, =E9videmment le
Solde ne se recalcule pas avec cette m=E9thode, mais j'aimerais
id=E9alement qu'il le fasse.

De toute =E9vidence, cette m=E9thode ne fonctionne pas bien.

Je sais que je peux utiliser une colonne Solde reli=E9e avec la table et
ensuite tout calculer depuis la table et faire un AfficheTable() =E0
chaque fois qu'un Montant change dans la Table. Mais encore l=E0 il
subsiste certains probl=E8mes comme celui des chiffres qui sont
localis=E9s dans le bandeau de s=E9lection ne se mettent pas =E0 jour.

Est-ce qu'on doit coder tous ces petits d=E9tails (qui n'en finissent
plus) =E0 la main ou s'il existe un truc automatique et simple pour
faire le travail et que je ne connais pas encore ?

Merci =E0 l'avance

10 réponses

1 2
Avatar
phig
Le 14/12/2010 07:02, Réal Phil a écrit :
Bonjour,

Le contexte:

Une table fichier avec colonnes reliées dont une qui contient un
Montant.
Une dernière colonne calculée non reliée (bien sûr) contenant le Solde
cumulé.

En théorie, le calcul suivant placé dans l'affichage d'une ligne
devrait fonctionner pour calculer et afficher le Solde cumulatif dans
la colonne Solde;

Nouv_Solde+=Montant[MoiMême..Valeur]
Solde[MoiMême..Valeur]=Nouv_Solde

Les problèmes

1. Le Solde ne se calcule pas correctement.
2. Comme le calcul est situé dans l'affichage d'une ligne, quand on
remonte dans la table, le Solde continue de se calculer indéfiniment.
C'est normal mais pas souhaitable.
3. Si on corrige un Montant au millieu de la table, évidemment le
Solde ne se recalcule pas avec cette méthode, mais j'aimerais
idéalement qu'il le fasse.

De toute évidence, cette méthode ne fonctionne pas bien.

Je sais que je peux utiliser une colonne Solde reliée avec la table et
ensuite tout calculer depuis la table et faire un AfficheTable() à
chaque fois qu'un Montant change dans la Table. Mais encore là il
subsiste certains problèmes comme celui des chiffres qui sont
localisés dans le bandeau de sélection ne se mettent pas à jour.

Est-ce qu'on doit coder tous ces petits détails (qui n'en finissent
plus) à la main ou s'il existe un truc automatique et simple pour
faire le travail et que je ne connais pas encore ?

Merci à l'avance



salut.
normalement, c'est solde[n-1]+montant[n] sauf pour 1
ca devrai marcher mieux ;)
Avatar
Réal Phil

salut.
normalement, c'est solde[n-1]+montant[n] sauf pour 1
ca devrai marcher mieux ;)



J'ai testé mais comme j'obtenais des resultats bizarres, j'ai placé
Trace(IndiceEnCours) sous l'affichage d'une ligne et au lieu d'avoir
une sequence continue normale de 1 a 242, voici ce que j'obtiens;

1,2,3,4,5,6,7,8,1,1,2 a 241 est ok puis
9,10,11,12,13,14,15,16,17,18,19,20,21,22, 241,240,239 a 222 de
reculons suivi de 242 et 242 deux fois.

Je ne comprend pas cette bizarrerie. Il y a de quoi y perdre son
latin.
J'ai ensuite Synchronise le projet et l'analyse mais cela ne change
rien.

TableOccurrence(MoiMeme) donne le bon resultat de 242
Un compteur de ligne indépendant donne des chiffres sequentiels de 1 a
286 (a cause des lignes qui se repetent)

Quelqu'un a une idée de ce qui se passe ?
Avatar
VPSoft
"Réal Phil" a écrit dans le message de news:


salut.
normalement, c'est solde[n-1]+montant[n] sauf pour 1
ca devrai marcher mieux ;)



J'ai testé mais comme j'obtenais des resultats bizarres, j'ai placé
Trace(IndiceEnCours) sous l'affichage d'une ligne et au lieu d'avoir
une sequence continue normale de 1 a 242, voici ce que j'obtiens;

1,2,3,4,5,6,7,8,1,1,2 a 241 est ok puis
9,10,11,12,13,14,15,16,17,18,19,20,21,22, 241,240,239 a 222 de
reculons suivi de 242 et 242 deux fois.

Je ne comprend pas cette bizarrerie. Il y a de quoi y perdre son
latin.
J'ai ensuite Synchronise le projet et l'analyse mais cela ne change
rien.

TableOccurrence(MoiMeme) donne le bon resultat de 242
Un compteur de ligne indépendant donne des chiffres sequentiels de 1 a
286 (a cause des lignes qui se repetent)

Quelqu'un a une idée de ce qui se passe ?

Bonsoir,

Je ne me rappelle plus du processus précis, mais je me souviens avoir
abandonné cela à l'époque (5.5 ou 8, sais plus). IndiceEncours() c'est, je
crois, la ligne qui a le bandeau. Si tu scrolle et que tu remontes, selon
que ce soit avec les flèches ou PgDown ou molette, le bandeau ne se déplace
pas pareil, etc...
Tout ça pour dire que j'ai fini par faire une lecture complète pour mettre
dans une table MEMOIRE, y compris le solde. Ensuite, c'est cette table
mémoire qui est visualisée, avec donc le solde déjà "figé".
En sortie de la colonne ou on peut changer le montant, je relance la
procédure qui recalcule TOUT.
Je sais que ce n'est pas tout à fait la réponse attendue, mais au cas ou...

Victor
Avatar
Réal Phil
On 14 déc, 16:07, "VPSoft" wrote:
"R al Phil" a crit dans le message de news:




> salut.
> normalement, c'est solde[n-1]+montant[n] sauf pour 1
> ca devrai marcher mieux ;)

J'ai test mais comme j'obtenais des resultats bizarres, j'ai plac
Trace(IndiceEnCours) sous l'affichage d'une ligne et au lieu d'avoir
une sequence continue normale de 1 a 242, voici ce que j'obtiens;

1,2,3,4,5,6,7,8,1,1,2 a 241 est ok puis
9,10,11,12,13,14,15,16,17,18,19,20,21,22, 241,240,239 a 222 de
reculons suivi de 242 et 242 deux fois.

Je ne comprend pas cette bizarrerie. Il y a de quoi y perdre son
latin.
J'ai ensuite Synchronise le projet et l'analyse mais cela ne change
rien.

TableOccurrence(MoiMeme) donne le bon resultat de 242
Un compteur de ligne ind pendant donne des chiffres sequentiels de 1 a
286 (a cause des lignes qui se repetent)

Quelqu'un a une id e de ce qui se passe ?

Bonsoir,

Je ne me rappelle plus du processus pr cis, mais je me souviens avoir
abandonn cela l' poque (5.5 ou 8, sais plus). IndiceEncours() c'est, je
crois, la ligne qui a le bandeau. Si tu scrolle et que tu remontes, selon
que ce soit avec les fl ches ou PgDown ou molette, le bandeau ne se d pla ce
pas pareil, etc...
Tout a pour dire que j'ai fini par faire une lecture compl te pour mettre
dans une table MEMOIRE, y compris le solde. Ensuite, c'est cette table
m moire qui est visualis e, avec donc le solde d j "fig ".
En sortie de la colonne ou on peut changer le montant, je relance la
proc dure qui recalcule TOUT.
Je sais que ce n'est pas tout fait la r ponse attendue, mais au cas ou...

Victor




Salut Victor,

Merci pour ta réponse. Dans un sens, ca me rassure de savoir que je ne
suis pas le seul à avoir des problèmes avec ca.
J'ai bien l'impression que c'est un serieux bug dans Windev.
IndiceEnCours sous Affichage d'une ligne devrait toujours donner un
entier sequentiel puisqu'il est sense indiquer le no de chaque ligne a
mesure qu'il les lit dans la table. Cette table est en WD11 et le
problème est toujours la.

Dans ce cas-ci, je ne peux pas utiliser une table memoire. Donc, a
moins que quelqu'un m'envoie une solution, je n'ai pas le choix que de
trouver une autre facon de faire.

Merci a toi.
Avatar
phig
Le 14/12/2010 18:09, Réal Phil a écrit :

salut.
normalement, c'est solde[n-1]+montant[n] sauf pour 1
ca devrai marcher mieux ;)



J'ai testé mais comme j'obtenais des resultats bizarres, j'ai placé
Trace(IndiceEnCours) sous l'affichage d'une ligne et au lieu d'avoir
une sequence continue normale de 1 a 242, voici ce que j'obtiens;

1,2,3,4,5,6,7,8,1,1,2 a 241 est ok puis
9,10,11,12,13,14,15,16,17,18,19,20,21,22, 241,240,239 a 222 de
reculons suivi de 242 et 242 deux fois.

Je ne comprend pas cette bizarrerie. Il y a de quoi y perdre son
latin.
J'ai ensuite Synchronise le projet et l'analyse mais cela ne change
rien.

TableOccurrence(MoiMeme) donne le bon resultat de 242
Un compteur de ligne indépendant donne des chiffres sequentiels de 1 a
286 (a cause des lignes qui se repetent)

Quelqu'un a une idée de ce qui se passe ?




242, c'est ta ligne de total ( normal)

quand il reaffiche le tableau, il le charge ( indice 1 à 242), puis il
ré-affiche le début ( 9 à 22) puis comme tu doit certainement demander
la fin de table ( indice) il fait à reculons depuis la fin et le bas (
242 à 222).

dans le code d'affichage d'une ligne, tu mets:

local i est un entier=ta_table // recupere l'indice en cours.
si i>1 et i<tableoccurrence(ta_table) alors // cas particulier du
premier solde et de la ligne de total

ta_table.solde[i]=ta_table.solde[i-1]+ta_table_montant[i]

fin


ca devrait fonctionner....
Avatar
Réal Phil
On 15 déc, 07:54, phig <"phig at free point fr"> wrote:
Le 14/12/2010 18:09, Réal Phil a écrit :





>> salut.
>> normalement, c'est solde[n-1]+montant[n] sauf pour 1
>> ca devrai marcher mieux ;)

> J'ai testé mais comme j'obtenais des resultats bizarres, j'ai placé
> Trace(IndiceEnCours) sous l'affichage d'une ligne et au lieu d'avoir
> une sequence continue normale de 1 a 242, voici ce que j'obtiens;

> 1,2,3,4,5,6,7,8,1,1,2 a 241 est ok puis
> 9,10,11,12,13,14,15,16,17,18,19,20,21,22, 241,240,239 a 222 de
> reculons suivi de 242 et 242 deux fois.

> Je ne comprend pas cette bizarrerie. Il y a de quoi y perdre son
> latin.
> J'ai ensuite Synchronise le projet et l'analyse mais cela ne change
> rien.

> TableOccurrence(MoiMeme) donne le bon resultat de 242
> Un compteur de ligne indépendant donne des chiffres sequentiels de 1 a
> 286 (a cause des lignes qui se repetent)

> Quelqu'un a une idée de ce qui se passe ?

242, c'est ta ligne de total ( normal)

quand il reaffiche le tableau, il le charge ( indice 1 à 242), puis il
ré-affiche le début ( 9 à 22) puis comme tu doit certainement deman der
la fin de table ( indice) il fait à reculons depuis la fin et le bas (
242 à 222).

dans le code d'affichage d'une ligne, tu mets:

local i est un entier=ta_table // recupere l'indice en cours.
si i>1 et i<tableoccurrence(ta_table) alors // cas particulier du
premier solde et de la ligne de total

ta_table.solde[i]=ta_table.solde[i-1]+ta_table_montant[i]

fin

ca devrait fonctionner....




Et bien... ça fonctionne presque.. ;-) Le concept est bon.

Si je laisse le curseur se positionner par lui-meme sur la premiere
ligne et que descend avec l'ascenseur tout est beau.
Mais si je positionne par programmation le bandeau sur la derniere
ligne sous Initialisation ou sous Prise de focus alors là chaque Solde
est égal au Montant de chaque ligne au lieu d'etre cumulatif.

Bon, si j'enlève le positionnement sur la derniere ligne et descend
avec l'ascenseur tous les Soldes sont bons MAIS si je remonte de
quelques lignes chaque Solde visible devient egal au Montant de sa
ligne. Si je redescend tous les Soldes sont recalcules avec de faux
chiffres. Evidemment, si je remonte jusqu'en haut et redescend tous
les Soldes sont bons à nouveau.

J'ai cherché une instruction ou proprietee qui indiquerait le sens de
defilement des lignes de la table afin d'empecher le calcul dans ce
cas mais j'ai pas trouvé. Faute de mieux, je pourrais probablement
placer le no de la ligne precedente dans une variable et faire en
sorte de ne pas calculer le Solde si la ligne precedente est plus
grande que celle en cours.

Qu'en penses-tu ?
Avatar
phig
Le 15/12/2010 19:34, Réal Phil a écrit :
On 15 déc, 07:54, phig<"phig at free point fr"> wrote:
Le 14/12/2010 18:09, Réal Phil a écrit :





salut.
normalement, c'est solde[n-1]+montant[n] sauf pour 1
ca devrai marcher mieux ;)





J'ai testé mais comme j'obtenais des resultats bizarres, j'ai placé
Trace(IndiceEnCours) sous l'affichage d'une ligne et au lieu d'avoir
une sequence continue normale de 1 a 242, voici ce que j'obtiens;



1,2,3,4,5,6,7,8,1,1,2 a 241 est ok puis
9,10,11,12,13,14,15,16,17,18,19,20,21,22, 241,240,239 a 222 de
reculons suivi de 242 et 242 deux fois.



Je ne comprend pas cette bizarrerie. Il y a de quoi y perdre son
latin.
J'ai ensuite Synchronise le projet et l'analyse mais cela ne change
rien.



TableOccurrence(MoiMeme) donne le bon resultat de 242
Un compteur de ligne indépendant donne des chiffres sequentiels de 1 a
286 (a cause des lignes qui se repetent)



Quelqu'un a une idée de ce qui se passe ?



242, c'est ta ligne de total ( normal)

quand il reaffiche le tableau, il le charge ( indice 1 à 242), puis il
ré-affiche le début ( 9 à 22) puis comme tu doit certainement demander
la fin de table ( indice) il fait à reculons depuis la fin et le bas (
242 à 222).

dans le code d'affichage d'une ligne, tu mets:

local i est un entier=ta_table // recupere l'indice en cours.
si i>1 et i<tableoccurrence(ta_table) alors // cas particulier du
premier solde et de la ligne de total

ta_table.solde[i]=ta_table.solde[i-1]+ta_table_montant[i]

fin

ca devrait fonctionner....




Et bien... ça fonctionne presque.. ;-) Le concept est bon.

Si je laisse le curseur se positionner par lui-meme sur la premiere
ligne et que descend avec l'ascenseur tout est beau.
Mais si je positionne par programmation le bandeau sur la derniere
ligne sous Initialisation ou sous Prise de focus alors là chaque Solde
est égal au Montant de chaque ligne au lieu d'etre cumulatif.

Bon, si j'enlève le positionnement sur la derniere ligne et descend
avec l'ascenseur tous les Soldes sont bons MAIS si je remonte de
quelques lignes chaque Solde visible devient egal au Montant de sa
ligne. Si je redescend tous les Soldes sont recalcules avec de faux
chiffres. Evidemment, si je remonte jusqu'en haut et redescend tous
les Soldes sont bons à nouveau.

J'ai cherché une instruction ou proprietee qui indiquerait le sens de
defilement des lignes de la table afin d'empecher le calcul dans ce
cas mais j'ai pas trouvé. Faute de mieux, je pourrais probablement
placer le no de la ligne precedente dans une variable et faire en
sorte de ne pas calculer le Solde si la ligne precedente est plus
grande que celle en cours.

Qu'en penses-tu ?




effectivement, ca ne marche pas, car le calcul n'est pas vraiment stocké
( relecture du fichier, donc remise à 0 du calcul) , donc montant[i-1]
peut être 0 voire nimporte quoi suivant par ou la navigation est passé.

mon conseil:
passes par une requête, puis remplissage de la table par pour tout et
tableajouteligne. comme ca, ton cumul sera stocké calculé et tu eviteras
le pb d'affichage. Gardes quand même ton code dans affichage, ca permet
d'éviter de relire la table pour la recalculer en cas de modif..
Avatar
VPSoft
"phig" <"phig at free point fr"> a écrit dans le message de news:
4d09d2b3$0$1586$
Le 15/12/2010 19:34, Réal Phil a écrit :
On 15 déc, 07:54, phig<"phig at free point fr"> wrote:
Le 14/12/2010 18:09, Réal Phil a écrit :





salut.
normalement, c'est solde[n-1]+montant[n] sauf pour 1
ca devrai marcher mieux ;)





J'ai testé mais comme j'obtenais des resultats bizarres, j'ai placé
Trace(IndiceEnCours) sous l'affichage d'une ligne et au lieu d'avoir
une sequence continue normale de 1 a 242, voici ce que j'obtiens;



1,2,3,4,5,6,7,8,1,1,2 a 241 est ok puis
9,10,11,12,13,14,15,16,17,18,19,20,21,22, 241,240,239 a 222 de
reculons suivi de 242 et 242 deux fois.



Je ne comprend pas cette bizarrerie. Il y a de quoi y perdre son
latin.
J'ai ensuite Synchronise le projet et l'analyse mais cela ne change
rien.



TableOccurrence(MoiMeme) donne le bon resultat de 242
Un compteur de ligne indépendant donne des chiffres sequentiels de 1 a
286 (a cause des lignes qui se repetent)



Quelqu'un a une idée de ce qui se passe ?



242, c'est ta ligne de total ( normal)

quand il reaffiche le tableau, il le charge ( indice 1 à 242), puis il
ré-affiche le début ( 9 à 22) puis comme tu doit certainement demander
la fin de table ( indice) il fait à reculons depuis la fin et le bas (
242 à 222).

dans le code d'affichage d'une ligne, tu mets:

local i est un entier=ta_table // recupere l'indice en cours.
si i>1 et i<tableoccurrence(ta_table) alors // cas particulier du
premier solde et de la ligne de total

ta_table.solde[i]=ta_table.solde[i-1]+ta_table_montant[i]

fin

ca devrait fonctionner....




Et bien... ça fonctionne presque.. ;-) Le concept est bon.

Si je laisse le curseur se positionner par lui-meme sur la premiere
ligne et que descend avec l'ascenseur tout est beau.
Mais si je positionne par programmation le bandeau sur la derniere
ligne sous Initialisation ou sous Prise de focus alors là chaque Solde
est égal au Montant de chaque ligne au lieu d'etre cumulatif.

Bon, si j'enlève le positionnement sur la derniere ligne et descend
avec l'ascenseur tous les Soldes sont bons MAIS si je remonte de
quelques lignes chaque Solde visible devient egal au Montant de sa
ligne. Si je redescend tous les Soldes sont recalcules avec de faux
chiffres. Evidemment, si je remonte jusqu'en haut et redescend tous
les Soldes sont bons à nouveau.

J'ai cherché une instruction ou proprietee qui indiquerait le sens de
defilement des lignes de la table afin d'empecher le calcul dans ce
cas mais j'ai pas trouvé. Faute de mieux, je pourrais probablement
placer le no de la ligne precedente dans une variable et faire en
sorte de ne pas calculer le Solde si la ligne precedente est plus
grande que celle en cours.

Qu'en penses-tu ?




effectivement, ca ne marche pas, car le calcul n'est pas vraiment stocké
( relecture du fichier, donc remise à 0 du calcul) , donc montant[i-1]
peut être 0 voire nimporte quoi suivant par ou la navigation est passé.

mon conseil:
passes par une requête, puis remplissage de la table par pour tout et
tableajouteligne. comme ca, ton cumul sera stocké calculé et tu eviteras
le pb d'affichage. Gardes quand même ton code dans affichage, ca permet
d'éviter de relire la table pour la recalculer en cas de modif..




Salut !
C'est malheureusement ce que je disais (table mémoire, solde stocké).
J'espérais que la solution de "phig" serait Ok car j'ai la même chose à
refaire.
Tant pis.
Bon courage,

Victor
Avatar
phig
Le 16/12/2010 15:54, VPSoft a écrit :
"phig"<"phig at free point fr"> a écrit dans le message de news:
4d09d2b3$0$1586$
Le 15/12/2010 19:34, Réal Phil a écrit :
On 15 déc, 07:54, phig<"phig at free point fr"> wrote:
Le 14/12/2010 18:09, Réal Phil a écrit :





salut.
normalement, c'est solde[n-1]+montant[n] sauf pour 1
ca devrai marcher mieux ;)





J'ai testé mais comme j'obtenais des resultats bizarres, j'ai placé
Trace(IndiceEnCours) sous l'affichage d'une ligne et au lieu d'avoir
une sequence continue normale de 1 a 242, voici ce que j'obtiens;



1,2,3,4,5,6,7,8,1,1,2 a 241 est ok puis
9,10,11,12,13,14,15,16,17,18,19,20,21,22, 241,240,239 a 222 de
reculons suivi de 242 et 242 deux fois.



Je ne comprend pas cette bizarrerie. Il y a de quoi y perdre son
latin.
J'ai ensuite Synchronise le projet et l'analyse mais cela ne change
rien.



TableOccurrence(MoiMeme) donne le bon resultat de 242
Un compteur de ligne indépendant donne des chiffres sequentiels de 1 a
286 (a cause des lignes qui se repetent)



Quelqu'un a une idée de ce qui se passe ?



242, c'est ta ligne de total ( normal)

quand il reaffiche le tableau, il le charge ( indice 1 à 242), puis il
ré-affiche le début ( 9 à 22) puis comme tu doit certainement demander
la fin de table ( indice) il fait à reculons depuis la fin et le bas (
242 à 222).

dans le code d'affichage d'une ligne, tu mets:

local i est un entier=ta_table // recupere l'indice en cours.
si i>1 et i<tableoccurrence(ta_table) alors // cas particulier du
premier solde et de la ligne de total

ta_table.solde[i]=ta_table.solde[i-1]+ta_table_montant[i]

fin

ca devrait fonctionner....




Et bien... ça fonctionne presque.. ;-) Le concept est bon.

Si je laisse le curseur se positionner par lui-meme sur la premiere
ligne et que descend avec l'ascenseur tout est beau.
Mais si je positionne par programmation le bandeau sur la derniere
ligne sous Initialisation ou sous Prise de focus alors là chaque Solde
est égal au Montant de chaque ligne au lieu d'etre cumulatif.

Bon, si j'enlève le positionnement sur la derniere ligne et descend
avec l'ascenseur tous les Soldes sont bons MAIS si je remonte de
quelques lignes chaque Solde visible devient egal au Montant de sa
ligne. Si je redescend tous les Soldes sont recalcules avec de faux
chiffres. Evidemment, si je remonte jusqu'en haut et redescend tous
les Soldes sont bons à nouveau.

J'ai cherché une instruction ou proprietee qui indiquerait le sens de
defilement des lignes de la table afin d'empecher le calcul dans ce
cas mais j'ai pas trouvé. Faute de mieux, je pourrais probablement
placer le no de la ligne precedente dans une variable et faire en
sorte de ne pas calculer le Solde si la ligne precedente est plus
grande que celle en cours.

Qu'en penses-tu ?




effectivement, ca ne marche pas, car le calcul n'est pas vraiment stocké
( relecture du fichier, donc remise à 0 du calcul) , donc montant[i-1]
peut être 0 voire nimporte quoi suivant par ou la navigation est passé.

mon conseil:
passes par une requête, puis remplissage de la table par pour tout et
tableajouteligne. comme ca, ton cumul sera stocké calculé et tu eviteras
le pb d'affichage. Gardes quand même ton code dans affichage, ca permet
d'éviter de relire la table pour la recalculer en cas de modif..




Salut !
C'est malheureusement ce que je disais (table mémoire, solde stocké).
J'espérais que la solution de "phig" serait Ok car j'ai la même chose à
refaire.
Tant pis.
Bon courage,

Victor





tout a fait.

j'avais zappé le message...
méa culpa...
Avatar
VPSoft
"phig" <"phig at free point fr"> a écrit dans le message de news:
4d0a2e30$0$22866$
Le 16/12/2010 15:54, VPSoft a écrit :
"phig"<"phig at free point fr"> a écrit dans le message de news:
4d09d2b3$0$1586$
Le 15/12/2010 19:34, Réal Phil a écrit :
On 15 déc, 07:54, phig<"phig at free point fr"> wrote:
Le 14/12/2010 18:09, Réal Phil a écrit :





salut.
normalement, c'est solde[n-1]+montant[n] sauf pour 1
ca devrai marcher mieux ;)





J'ai testé mais comme j'obtenais des resultats bizarres, j'ai placé
Trace(IndiceEnCours) sous l'affichage d'une ligne et au lieu d'avoir
une sequence continue normale de 1 a 242, voici ce que j'obtiens;



1,2,3,4,5,6,7,8,1,1,2 a 241 est ok puis
9,10,11,12,13,14,15,16,17,18,19,20,21,22, 241,240,239 a 222 de
reculons suivi de 242 et 242 deux fois.



Je ne comprend pas cette bizarrerie. Il y a de quoi y perdre son
latin.
J'ai ensuite Synchronise le projet et l'analyse mais cela ne change
rien.



TableOccurrence(MoiMeme) donne le bon resultat de 242
Un compteur de ligne indépendant donne des chiffres sequentiels de 1
a
286 (a cause des lignes qui se repetent)



Quelqu'un a une idée de ce qui se passe ?



242, c'est ta ligne de total ( normal)

quand il reaffiche le tableau, il le charge ( indice 1 à 242), puis il
ré-affiche le début ( 9 à 22) puis comme tu doit certainement demander
la fin de table ( indice) il fait à reculons depuis la fin et le bas (
242 à 222).

dans le code d'affichage d'une ligne, tu mets:

local i est un entier=ta_table // recupere l'indice en cours.
si i>1 et i<tableoccurrence(ta_table) alors // cas particulier du
premier solde et de la ligne de total

ta_table.solde[i]=ta_table.solde[i-1]+ta_table_montant[i]

fin

ca devrait fonctionner....




Et bien... ça fonctionne presque.. ;-) Le concept est bon.

Si je laisse le curseur se positionner par lui-meme sur la premiere
ligne et que descend avec l'ascenseur tout est beau.
Mais si je positionne par programmation le bandeau sur la derniere
ligne sous Initialisation ou sous Prise de focus alors là chaque Solde
est égal au Montant de chaque ligne au lieu d'etre cumulatif.

Bon, si j'enlève le positionnement sur la derniere ligne et descend
avec l'ascenseur tous les Soldes sont bons MAIS si je remonte de
quelques lignes chaque Solde visible devient egal au Montant de sa
ligne. Si je redescend tous les Soldes sont recalcules avec de faux
chiffres. Evidemment, si je remonte jusqu'en haut et redescend tous
les Soldes sont bons à nouveau.

J'ai cherché une instruction ou proprietee qui indiquerait le sens de
defilement des lignes de la table afin d'empecher le calcul dans ce
cas mais j'ai pas trouvé. Faute de mieux, je pourrais probablement
placer le no de la ligne precedente dans une variable et faire en
sorte de ne pas calculer le Solde si la ligne precedente est plus
grande que celle en cours.

Qu'en penses-tu ?




effectivement, ca ne marche pas, car le calcul n'est pas vraiment stocké
( relecture du fichier, donc remise à 0 du calcul) , donc montant[i-1]
peut être 0 voire nimporte quoi suivant par ou la navigation est passé.

mon conseil:
passes par une requête, puis remplissage de la table par pour tout et
tableajouteligne. comme ca, ton cumul sera stocké calculé et tu eviteras
le pb d'affichage. Gardes quand même ton code dans affichage, ca permet
d'éviter de relire la table pour la recalculer en cas de modif..




Salut !
C'est malheureusement ce que je disais (table mémoire, solde stocké).
J'espérais que la solution de "phig" serait Ok car j'ai la même chose à
refaire.
Tant pis.
Bon courage,

Victor





tout a fait.

j'avais zappé le message...
méa culpa...





Vraiment pas de quoi. Au contraire, ça aurait peut être permis de trouver
une solution "native"

Victor
1 2