Salut !
+1 pour cmarcotte
Pour ta gestion de stock (mais bon.... là, c'est pas vraiment spécifique à vb), je te conseillerais de remplir un grid temporaire, et au moment de la validation de la facture, tu peux remplir ta table de détail de facture, et dans un même temps décompter les articles de ton stock.
Ensuite, en cas de modification de ta facture ou livraison, tu récupères les éléments à double (1 fois dans ton grid et une fois dans un DataTable par ex.) et au moment de la re-validation, tu compares pour voir ce qui a changé pour rajouter à ton stock les articles qui ont été enlevés de la facture et enlever au stock ceux qui n'y étaient pas !
Pour une meilleure traçabilité, je marquerais même tout les mouvements de stock (inclu modifications de factures), et au moment de savoir quel stock tu as, créer des points de repères par un "inventaire", puis de sélectionner les mouvements de stock par une requête du genre SELECT SUM(mouvement_stock.qte) + inventaire_stock.qte FROM mouvement_stock WHERE DateHeure > (SELECT MAX(DateHeure) FROM inventaire_stock) AND RéfArticle = 123456 GROUP BY mouvement_stock.RéfArticle;
! ... bon, c'est juste une idée...
pour info, en général, il faut essayer d'éviter les JOIN en SQL avec ce genre de table qui deviennent vite très grosse, car ton SQL ramera un max, mais si tu y tiens vraiment, cela ressemblera plus à ce style:
SELECT SUM(mouvement_stock.qte) + inventaire_stock.qte FROM inventaire_stock LEFT OUTER JOIN mouvement_stock ON mouvement_stock.DateHeure>MAX(inventaire_stock.DateHeure) AND mouvement_stock.RéfArticle=inventaire_stock.RéfArticle WHERE mouvement_stock.RéfArticle = 123456 GROUP BY mouvement_stock.RéfArticle;
En espérant que cela puisse t'aider
JD.
P.S: les requêtes SQL sont uniquements là pour illustrer et n'ont aucunement été testées... ce n'est pas impossible qu'elles ne soit pas à 100% correctes.