Partage
  • Partager sur Facebook
  • Partager sur Twitter

Access

Requête mise à jour

    19 mai 2011 à 10:31:35

    Bonjour à tous,

    Je débute sur Access et j'ai besoin de faire quelque chose qui est j'en suis sûr très simple mais qui me pose problème.

    Je dois faire un "logiciel" de gestion de stocks.

    Pour chaque article j'ai le stock initial, je rentre le nombre de ventes, le nombres d'acahts et je calcule tout simplement le stock courant en faisant StockInitial - NombreVentes + NombreAchats. Le problème est que je souhaiterais qu'ensuite le stock courant que je viens de calculer devienne la nouvelle valeur du stock initial pour je puisse continuer sans avoir à actualiser à la main la valeur du stock.

    Savez-vous comment faire cela?

    Merci beaucoup

    PS: je suis sûr Access 2003
    • Partager sur Facebook
    • Partager sur Twitter
      19 mai 2011 à 11:13:08

      Salut
      Tout d'abord, as tu une ou plusieurs tables qui permettent de stocker les informations concernant les articles ?
      Si oui, tu n'as qu'à créer un formulaire qui te permet de saisir le nombre de ventre et le nombre d'achat ainsi qu'un bouton pour valider

      Puis tu fais un requête update pour mettre à jour le stock d'après les valeurs que tu viens de saisir
      (Il faut bien entendu "lier" cette requête au bouton de validation)

      J'espère que cela t'aidera et si besoin n'hésite pas à poser d'autre questions pour détailler les points de blocage

      • Partager sur Facebook
      • Partager sur Twitter
        19 mai 2011 à 14:59:27

        Salut,

        Merci beaucoup pour ta réponse.
        J'ai effectivement fait un formulaire où je rentre le nombre d'achats et le nombre de ventes, ma question c'est justement comment faire une requête update liée au bouton de validation.

        • Partager sur Facebook
        • Partager sur Twitter
          19 mai 2011 à 16:57:06

          I) Création de la requête :


          Objets Requêtes>Nouveau>Mode Création
          Tu sélectionnes la table qui permet de stocker les informations sur les achats (je vais l'appeler Achat pour être original) puis fermé

          Dans la barre de menu, tu va dans Affichage/Mode SQL.
          Tu devrai avoir quelque chose comme
          SELECT 
          FROM Achat
          


          Tu remplaces par
          Parameters NombreVentes Interger, NombreAchats Interger, Id Short;
          UPDATE Achat set stockInitial = stockInitial  - [NombreVentes] + [NombreAchats] WHERE id=[Id];
          

          En gros cette requête signifie mets à jout le stock avec les nombres que je te donne en paramètre (NombreVentes et NombreAchats ) pour la ligne concernée

          Ensuite tu fais Ctrl + S et tu met le nom que tu souhaites pour cette requête. Une fois de plus, je vais être très original et l'appelé MAJAchat


          II) Modification du formulaire


          1) Adaptation du formulaire


          Ouvres le formulaire en mode Création : Objets>Le Formulaire>Modifier
          D'abord renommes tes zones de texte et le bouton de validation pour que cela soit parlant
          Il faut également que tu fasses apparaître quelque part l'id de l'achat concerné par les informations (au pire tu peux mettre en invisible cet id)

          2) Création de l’événement sur le bouton de validation


          Fais un clic droit sur ton bouton de validation puis Propriétés
          Dans l'onglet événement tu choisis la valeurs [Procédure événementielle] pour l’événement sur clic. Puis tu clics sur le bouton ... à droite
          Ceci te ferra aller dans le code source VBA, dans une fonction qui devrait s’appeler comme le nom de ton bouton suivi de _Clic
          Exemple :
          Public Sub cmdAfficher_Click()
          

          3) Mise à jour du code VBA


          La dedans met ce code (à adapter suivant les noms des objets présents dans le formulaire)
          Dim qdf As DAO.QueryDef
             Set qdf = CurrentDb.QueryDefs("MAJAchat")
             qdf.Parameters("NombreVentes") = me.txbNombreVentes.Value
             qdf.Parameters("NombreAchats") = me.txbNombreAchats.Value
             qdf.Parameters("Id") = me.txbIDAchat.Value
             qdf.Execute
             qdf.Close
          



          Pour que cela fonctionne, il faut ajouter la référence à DAO

          Pour cela, il faut aller dans la barre du menu de Microsoft Visual Basic(là ou tu as le code VBA)
          Outils>Références et cochés Microsoft DAO 3.* Object Library (* chiffre qui n'est pas le même en fonction des versions d'Access)

          L'explication est pas forcément terrible mais il est délicat de faire des explications clairs adaptées à ton appli. Je suppose donc que je te relirai bientôt :lol:
          • Partager sur Facebook
          • Partager sur Twitter
            20 mai 2011 à 11:07:17

            Merci encore de ta répons rapide.

            Pour mettre à jour la valuer du stock j'ai finalement utilisé une requête mise en jour sans taper de code (je pas sur que ce soit mieux mais pour l'instant j'essaie de faire au plus simple^^).
            Maintenant il ne me reste plus qu'à appeler la requête à partir du bouton du formulaire, faut-il toujours que je mette les lignes suivantes ou est-ce un code différent?

            Dim qdf As DAO.QueryDef
            Set qdf = CurrentDb.QueryDefs("MAJAchat")
            qdf.Parameters("NombreVentes") = me.txbNombreVentes.Value
            qdf.Parameters("NombreAchats") = me.txbNombreAchats.Value
            qdf.Parameters("Id") = me.txbIDAchat.Value
            qdf.Execute
            qdf.Close

            Merci

            Bonne journée
            • Partager sur Facebook
            • Partager sur Twitter
              20 mai 2011 à 11:43:39

              Peux tu me mettre la requête que tu utilises ?
              En fonction de celle ci, le code doit être modifier.
              • Partager sur Facebook
              • Partager sur Twitter
                20 mai 2011 à 13:12:13

                En fait j'ai utiliser une autre méthode, c'est surement un peu amateur mais vu que ma base est petite ça devrait pas poser de problème.
                J'ai fait une macro ouverture de la requête mise à jour et le bouton du formulaire lance cette macro (j'ai pas trouver comment on pouvait lancer directement une requête sans avoir à taper du code).

                Merci à toi de m'avoir aidé

                Bonne journée
                • Partager sur Facebook
                • Partager sur Twitter
                  23 mai 2011 à 16:05:57

                  Bonjour à tous,

                  J'ai un nouveau problème sur ma base de données.

                  Je voudrais exécuter une requête sous condition: quand le stock devient inférieur au stock minimal je voudrais afficher un message. J'ai crée une requête alerte qui montre que la valeur du stock est passée en dessous de la valeur du stock minimal, mon problème c'est pour exécuter cette requête.
                  En effet je ne veux l'exécuter que lorsqu'elle est nécessaire (lorsque pour au moins un article on a stock<stock minimum).

                  J'ai écrit un module en VBA mais celui-ci ne fonctionne pas, je vous l'indique:

                  Function alerte_stock()

                  If article.Stock < article.StockMinimum Then DoCmd.OpenQuery alerte
                  End If

                  End Function


                  Savez-vous ce qui ne va pas (le message d'erreur indique: End If sans bloc If)?

                  Merci à vous

                  Bonne après midi
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Access

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown