|
| Started by ElPato, Mar., 01 2026 11:58 AM - No answer |
| |
| | | |
|
| |
| Posted on March, 01 2026 - 11:58 AM |
Bonjour tout le monde Voici mon problème (J’essaie de ne pas être trop long ). Dans une boucle, une analyse par salarié : -Affiche dans une table A (à l’écran) les heures pour le mois, par jour, du salarié : heures de travail, d’absence, maladie etc… -Puis, à partir des données affichées dans A, dispatche dans une table B ces heures récapitulées par semaine et par catégorie -Puis, à partir de la table B, récapitule dans une table C les heures totalisées de la table B Et la table C résume toutes les heures par salarié. (je ne montre pas le code, trop long ) Cette application fonctionne depuis des années, et développée en Windev 20. Mais je décide de la retravailler en Windev 28 La transition se passe très bien, par de warnings sérieux, pas de problème. Mais, dans la partie expliquée plus haut, problème : les calculs ne se font plus correctement Et je vois que le problème apparaît lors du remplissage dans table B. En effet la table A affiche tout le mois de travail du salarié, et surtout affiche une rupture par semaine, contenant les heures cumulées de la semaine. Voici un petit morceau de procédure, au moment de remplir la table B : La procédure va chercher les heures par semaine calculées dans la rupture tableA et va les copier dans tableB, dans la colonne nommée ColonneH ; dans la tableB, la colonne Indice contient le numéro de la semaine,par exemple 5, et la rupture correspondante contient le total des heures de la semaine 5, par exemple 35. La procédure va alors placer 35 dans la tableB, en face de la valeur 5.
POUR c=1 À TableOccurrence(TableA) TablePosition(TableA,c) x=TableIndiceRupture(TableA.BasRupture1,c) z=TableCherche("TableB.indice",x,rechercheIdentique) SI z>0 TableB.ColonneH[z]= TableA[x].BasRupture1.soustotalHeuresCalculées FIN FIN Absolument rien de bien compliqué, mais le problème apparaît dans cette boucle, les données ne s’affichent pas dans tableB. Pour le résoudre, j’ai découvert (après un certain temps… ) qu’il faut alors placer juste avant un Multitache(-1) et là seulement, cela fonctionne, comme si les données entrent puis disparaissent, comme si le traitement est tellement rapide que quelque chose n’a pas le temps de se faire… Une autre manière de résoudre est la suivante : J’avais indiqué en début de procédure : TableA..affichageactif=faux. Eh bien, c’est pas bon : si je retire cette ligne, et que je retire aussi Multitache(-1), tout fonctionne correctement. Donc je suppose que cela est lié à la vitesse de traitement, mais je n’en sais pas plus. J’espère avoir été clair et que cela puisse être utile. En tout cas, cela mérite réflexion… ElPato |
| |
| |
| | | |
|
| | | | |
| | |
|