Bonjour à tous,
J'ai une question concernant la mise à jour d'un champ d'un sous-formulaire via une requête multitables.
Pour être plus clair, voici qqs informations.
Les tables qui sont concernées sont les suivantes :
-BIENS_PRODUCTION
-PACKAGING_AROMES_ADDITIFS
-DETAILS_ENTREES_STOCK_MP
-ENTREES_STOCK_MP
En gros, ces tables mettent en jeu des biens de production, qui font l'objet d'entrées dans le stock des matières premières, entrées qui sont détaillées dans la table DETAILS_ENTREES_STOCK_MP.
La table PACKAGING_AROMES_ADDITIFS concerne des biens de production d'un type particulier, d'où la relation 1-1 qui relie cette table à la table BIENS_PRODUCTION.
Voici les relations qui existent entre les tables
Afin de gérer les entrées en stock, j'ai donc créé un formulaire, sur lequel il y a un sous formulaire détaillant les différents biens de production concernés par l'entrée, ainsi que leur nombre.
Voir ici pour un printscreen du formulaire
[img=http://img358.imageshack.us/img358/8982/formjh1.th.jpg]
Tout fonctionne à merveille, si ce n'est que j'aimerais mettre à jour le champ "Poids Total" du sous-formulaire automatiquement, sur base du nombre d'unité, et du poids du bien de production (donc PoidsTotal = NbrUnites*Poids).
Vu que ces infos se trouvent dans des tables différentes, j'ai créé une requête, qui, pour une entrée en stock et pour un bien de production particulier, va regarder son poids, et le multiplie par le nombre d'unités de ce bien. L'info sur le bien et sur le nombre d'unités sont tirées du sous-formulaires, et servent à faire un tri sur les résultats de la requête.
Ci-dessous la requête en question :
[img=http://img119.imageshack.us/img119/200/reqpb6.th.jpg]
Et en SQL :
Il me semble que la requête fonctionne correctement (si je la lance manuellement) et me renvoie les bons résultats.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT [Poids]*[NbrUnites] AS PoidsTotal FROM ENTREES_STOCK_MP INNER JOIN ((BIENS_PRODUCTION INNER JOIN DETAILS_ENTREES_STOCK_MP ON BIENS_PRODUCTION.RefBienProduction = DETAILS_ENTREES_STOCK_MP.RefBienProduction) INNER JOIN PACKAGINGS_AROME_ADDITIF ON BIENS_PRODUCTION.RefBienProduction = PACKAGINGS_AROME_ADDITIF.RefBienProduction) ON ENTREES_STOCK_MP.RefEntreeStockMP = DETAILS_ENTREES_STOCK_MP.RefEntreeStockMP WHERE (((BIENS_PRODUCTION.Nom)=[Forms]![subfrmDetailsEntreesStockMP]![cboBienProduction]) AND ((DETAILS_ENTREES_STOCK_MP.RefEntreeStockMP)=[Forms]![subfrmDetailsEntreesStockMP]![RefEntreeStockMP]));
Par contre, je n'arrive pas à la lier correctement au sous-formulaire.
Ce que j'ai fait, c'est mettre ceci : =[Query]!PoidsTotal dans l'événement On GotFocus du champ PoidsTotal de mon sous-formulaires, mais Access me renvoie une erreur.
Est-ce que quelqu'un pourrait me dire où je me trompe ?
Peux-être y a t'il également moyen de faire tout cela beaucoup plus simplement ?
Bref, un petit coup de main me ferait vraiment plaisir :-)
Merci
Benoît
Partager