Calcul automatique du Solde

Le
Réal Phil
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 So=
lde
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
phig
Le #22923301
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 ;)
Réal Phil
Le #22924841

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 ?
VPSoft
Le #22925751
"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 ?

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
Réal Phil
Le #22926061
On 14 déc, 16:07, "VPSoft"
"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 ?

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.
phig
Le #22927051
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....
Réal Phil
Le #22928511
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 ?
phig
Le #22929681
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..
VPSoft
Le #22930991
"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
phig
Le #22931061
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...
VPSoft
Le #22931591
"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
Publicité
Poster une réponse
Anonyme