Bonjour à tous,
je rencontre un problème pas facile à expliquer. J'ai déjà mis un petit moment à comprendre ce qui perturbait mon programme.
J'ai un écran de gestion de stocks qui me permet de voir pour tous mes articles l'état du stock, la quantité attendue (les achats que l'on va recevoir tôt ou tard), le besoin (d'après les OFs qui ont besoin de l'article comme fourniture), ......
J'ai donc une table TABLE_Stocks (la principale) qui est alimentée par une requête SQL, cette table a pour clé de parcourt la référence article, donc par défaut cette table est triée selon la colonne ARTICLE.
Quand je clique sur une ligne d'un article j'ai le détail des besoins dans la table BESOINS en bas. Dans cette table je peux double-cliquer un OF pour lui affecter une quantité de fourniture, ce qui a pour conséquence de changer un certain nombre de compteurs, le stock, le besoin, ....
Il faut donc que la table principale se raffraichisse tout en revenant sur la même ligne qu'auparavant. J'ai donc essayé ce bout de code :
Et je remarque que ce code fonctionne bien tant qu'on ne touche pas aux fonctions de tri des différentes colonnes de la table TABLE_Stocks.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 // j'ai dans ma variable aid la clé de l'article Ouvre(FEN_Lancement_OF) Pos est un entier = TableCherche(TABLE_Stocks.COL_id, aid) Info(Pos) TableAffiche(TABLE_Stocks) TableSelectPlus(TABLE_Stocks, Pos)
Exemple : On considère l'article 70113 STATIQUE (en 6ème position dans la table).
On voit que j'ai 982 statiques en stock, et un besoin sur 2 OF pour un total de 182 statiques. Je veux affecter 12 statiques à l'opération 501 de l'OF F1103075. Je double-clique sur la ligne de l'OF à alimenter, et je renseigne la fenêtre :
Une fois que je clique VALIDER, le programme recherche la position de la ligne de l'article 70113 STATIQUE, et la trouve bien !!
et mes données se rafraichissent toutes seules l'instant d'après :
On a bien 12 pièces en moins sur le stock, 12 en moins sur le besoin, et le besoin sur l'OF F1103075 est passé de 82 à 70 aussi. Donc tout est ok.
Maintenant, je joue un peu avec les colonnes, les tris surtout, au niveau des quantités, notamment la colonne STOCK, au point que je me retrouve dans cette configuration (l'article considéré est maintenant en position 2):
De nouveau je vais faire un lancement de 9 statiques pour voir :
Je valide, et de retour aux tables, le programme me calcule la ligne de l'article 70113 STATIQUE en position 3.
On pourrait croire que c'est la bonne position mais regardez bien la toute première ligne !! Il s'est glissé une ligne qui n'a rien à faire là puisqu'elle ne respecte pas le filtre imposé (zone de saisie 70 tout en haut à gauche) mais pendant un court instant elle apparait en tête de la table et fausse le calcul de la position. Finalement, la ligne sélectionnée n'est pas la bonne et les infos affichées non plus !!
Ce qui est étrange c'est que je lance la recherche de position avant la réactualisation de la table donc je ne vois pas ce qui déclenche l'apparition de cette ligne qui ne rentre pas dans le filtre.
D'autre part, je ne rencontre le problème que lorsque j'ai cliqué sur les tris de colonnes avant.
Enfin je précise que le filtrage des tables est réalisé en utilisant le traitement "Filtrage des enregistrements" associé aux objets "Tables", peut-être que c'est une piste....
Désolé d'avoir été aussi long mais je voulais décrire parfaitement le probème.
Merci à quiconque m'aidera à trouver la solution
Partager