IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Requete de mise à jour d'un champ d'un sous-formulaire


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Points : 52
    Points
    52
    Par défaut Requete de mise à jour d'un champ d'un sous-formulaire
    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 :
    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]));
    Il me semble que la requête fonctionne correctement (si je la lance manuellement) et me renvoie les bons résultats.

    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

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Tu peux intégrer directement le poids du bien dans ton sous formulaire.

    Si la source de ton sous formulaire n'est pas une requête, transforme la en y ajoutant ton champ poids.

    C'est plus simple.

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    En effet, j'aurais dû y penser plus tôt, merci pour ton aide !
    J'ai encore une petite question : Etant donné que mon champs "Poids total" doit être stocké dans ma base, et que ce champ, sur mon formulaire est un champ calculé (et donc non lié ?), quel paramètre dois-je activer pour que l'écriture se fasse ?

    Merci pour ta réponse

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Les champs calculés ne se stockent pas. Tu les retrouves quand tu veux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/04/2010, 18h48
  2. Réponses: 5
    Dernier message: 23/10/2008, 17h34
  3. Requete mise à jour avec un champ calculé
    Par gberthier dans le forum Requêtes et SQL.
    Réponses: 35
    Dernier message: 24/04/2008, 14h25
  4. Réponses: 0
    Dernier message: 19/02/2008, 11h35
  5. Réponses: 4
    Dernier message: 30/05/2006, 20h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo