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

VBA Access Discussion :

Mise à jour du stock après annulation


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Base de données
    Inscrit en
    August 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Base de données
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : August 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut Mise à jour du stock après annulation
    Bonjour,
    j'ai découvert ce tuto grâce à une recherche sur Google, et j'avoue que je suis plus que satisfait. Merci beaucoup pour le travail abattu, ainsi que la documentation très bien détaillé.

    Je travaille présentement sur un projet similaire (logiciel de caisse), pour la boutique de ma femme. Et je me suis beaucoup inspiré de votre travail. Encore merci. Cependant, je bloque sur un point: Comment ajouter un bouton ANNULER (voir l'image en pj).

    Le probleme :
    A - En effet, lorsque la liste des articles selectionnes contient une seule ligne c'es facile. > On supprime la ligne > on met a jour le stock de produit > on prepare le formulaire principal pour une nouvelle entree.
    B - Mais, lorsqu'il ya pusieur lignes de produits, je ne sais pas comment faire pour ajuster le stock de chaque produit.

    Ca faift deja plusieurs semaines que je cherche une solution, mais toujours rien.

    Pouvez-vous m'aider s'il vous plait ?

    Merci.

    Nom : image_2023-10-27_120554836.png
Affichages : 118
Taille : 146,0 Ko

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    August 2004
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : August 2004
    Messages : 8 202
    Points : 19 286
    Points
    19 286
    Billets dans le blog
    60
    Par défaut
    Bonjour,

    Votre question n'est pas en lien direct avec le tuto.

    Cela dit, il faudrait je pense que votre table T_Articles contienne déjà un champ selection pour enregistrer la sélection de l'article.

    Ensuite, il faudrait exécuter une requête qui va supprimer les articles de la table T_Detail_Facture qui sont sélectionnés dans la table T_Articles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private sub cmdAnnuler()
     
        ' exécution de la requête qui supprime les articles du détail de la facture qui sont sélectionnés dans la table T_Articles
        currentdb.execute "delete from T_Detail_Facture where IdFacture = " & nz(Me.IdFacture,0) & " and IdArticle in (select idArticle from T_Articles where selection=True)", dbFailOnError
     
        ' déselectionne tous les enregistrements de la table T_Articles
        currentdb.execute "update T_Articles set selection=False ;", dbFailOnError
     
        Me.Refresh ' rafraîchit le formulaire
     
    end sub
    Il faut donc disposer d'un champ sélection dans la table T_Articles sinon ça ne marchera pas :

    T_Article(IdArticle, ..., selection)

    Et pour la table détail facture :

    T_Detail_Facture(IdDetail, IdFacture, IdArticle, ...)

    Je vais transférer nos messages dans une nouvelle discussion pour que d'autres puissent éventuellement compléter ma réponse.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre à l'essai
    Homme Profil pro
    Base de données
    Inscrit en
    August 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Base de données
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : August 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par User Voir le message
    Bonjour,

    Votre question n'est pas en lien direct avec le tuto.
    Je vous remercie pour votre réponse.
    Vous avez raison, ma question n'est pas directement liée au tuto. Je souhaite juste ajouter une fonctionnalité supplémentaire afin de rendre l'utilisation plus facile.


    Citation Envoyé par User Voir le message
    Cela dit, il faudrait je pense que votre table T_Articles contienne déjà un champ selection pour enregistrer la sélection de l'article.

    Ensuite, il faudrait exécuter une requête qui va supprimer les articles de la table T_Detail_Facture qui sont sélectionnés dans la table T_Articles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private sub cmdAnnuler()
     
        ' exécution de la requête qui supprime les articles du détail de la facture qui sont sélectionnés dans la table T_Articles
        currentdb.execute "delete from T_Detail_Facture where IdFacture = " & nz(Me.IdFacture,0) & " and IdArticle in (select idArticle from T_Articles where selection=True)", dbFailOnError
     
        ' déselectionne tous les enregistrements de la table T_Articles
        currentdb.execute "update T_Articles set selection=False ;", dbFailOnError
     
        Me.Refresh ' rafraîchit le formulaire
     
    end sub
    Il faut donc disposer d'un champ sélection dans la table T_Articles sinon ça ne marchera pas :

    T_Article(IdArticle, ..., selection)

    Et pour la table détail facture :

    T_Detail_Facture(IdDetail, IdFacture, IdArticle, ...)
    Je vais évaluer et mettre en pratique la logique que vous avez proposée, et je ne manquerai pas de republier le résultat ici.

    Citation Envoyé par User Voir le message

    Je vais transférer nos messages dans une nouvelle discussion pour que d'autres puissent éventuellement compléter ma réponse.

    Cdlt,
    Très bien. Encore merci de m'avoir répondu.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Base de données
    Inscrit en
    August 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Base de données
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : August 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    La logique suivante fonctionne très bien pour la suppression des données. Mais mon réel problème se situe au niveau de la mise à jour du stock de chacun des produits supprimés.

    Comment identifier chaque article de la liste, et mettre son stock à jour avant de le supprimer ?
    Citation Envoyé par User Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private sub cmdAnnuler()
     
        ' exécution de la requête qui supprime les articles du détail de la facture qui sont sélectionnés dans la table T_Articles
        currentdb.execute "delete from T_Detail_Facture where IdFacture = " & nz(Me.IdFacture,0) & " and IdArticle in (select idArticle from T_Articles where selection=True)", dbFailOnError
     
        ' déselectionne tous les enregistrements de la table T_Articles
        currentdb.execute "update T_Articles set selection=False ;", dbFailOnError
     
        Me.Refresh ' rafraîchit le formulaire
     
    end sub
    Cdlt,

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    August 2004
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : August 2004
    Messages : 8 202
    Points : 19 286
    Points
    19 286
    Billets dans le blog
    60
    Par défaut
    Bonjour,

    Comment mettez-vous à jour votre stock actuellement ?

    Les qté d'articles sont-elles enregistrées dans une table et si oui laquelle ?

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  6. #6
    Membre à l'essai
    Homme Profil pro
    Base de données
    Inscrit en
    August 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Base de données
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : August 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Bonjour,
    Citation Envoyé par User Voir le message
    Comment mettez-vous à jour votre stock actuellement ?
    1 - je fais un Insert dans les tables Tbl_Acq et Tbl_AcqDetail
    2 - Ensuite, je fais une mise a jour de la table Tbl_Product sur la colonne ProdStock.

    Citation Envoyé par User Voir le message
    Les qté d'articles sont-elles enregistrées dans une table et si oui laquelle ?
    Pour faire simple j'ai choisi d'enregistrer les quantites en stock dans la table Tbl_Product.

    Priere de voir la capture en piece jointe.

    Nom : ERD.PNG
Affichages : 65
Taille : 15,7 Ko

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    August 2004
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : August 2004
    Messages : 8 202
    Points : 19 286
    Points
    19 286
    Billets dans le blog
    60
    Par défaut
    Bonjour,

    Sans ces éléments on ne peut pas vous aider plus.

    Pour mettre à jour les quautités en stock dans la table Tbl_Product avant suppression dans le détail :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Private sub cmdAnnuler()
     
        dim strSQL as String
     
        strSQL = "UPDATE Tbl_Product INNER JOIN Tbl_AcqDetail ON Tbl_Product.ProdID_PK = Tbl_AcqDetail.ProdID_FK " & _
                 "SET Tbl_Product.ProdStock = Tbl_Product.ProdStock - [Tbl_AcqDetail].[AcqQty] " & _
                 "WHERE (Tbl_AcqDetail.AcqID_FK = " & nz(Me.AcqID_PK,0) & ") and (Tbl_Product.IsSelected=True);"
     
        ' exécution de la requête qui met à jour le stock des articles en fonction des quantités à supprimer du détail de la facture :
        currentdb.execute strSQL, dbFailOnError
     
        ' exécution de la requête qui supprime les articles du détail de la facture qui sont sélectionnés dans la table T_Articles
        currentdb.execute "delete from Tbl_AcqDetail where AcqID_FK = " & nz(Me.AcqID_PK,0) & " and ProdID_FK in (select ProdID_PK from Tbl_Product where IsSelected=True)", dbFailOnError
     
        ' déselectionne tous les enregistrements de la table T_Articles
        currentdb.execute "update Tbl_Produc set IsSelected=False ;", dbFailOnError
     
        Me.Refresh ' rafraîchit le formulaire
     
    end sub
    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Membre à l'essai
    Homme Profil pro
    Base de données
    Inscrit en
    August 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Base de données
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : August 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Bonjour,
    J'ai fait quelques ajustements mineurs et ça fonctionne correctement.
    Merci infiniment pour votre aide et votre disponibilité.
    Citation Envoyé par User Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Private sub cmdAnnuler()
     
        dim strSQL as String
     
        strSQL = "UPDATE Tbl_Product INNER JOIN Tbl_AcqDetail ON Tbl_Product.ProdID_PK = Tbl_AcqDetail.ProdID_FK " & _
                 "SET Tbl_Product.ProdStock = Tbl_Product.ProdStock - [Tbl_AcqDetail].[AcqQty] " & _
                 "WHERE (Tbl_AcqDetail.AcqID_FK = " & nz(Me.AcqID_PK,0) & ") and (Tbl_Product.IsSelected=True);"
     
        ' exécution de la requête qui met à jour le stock des articles en fonction des quantités à supprimer du détail de la facture :
        currentdb.execute strSQL, dbFailOnError
     
        ' exécution de la requête qui supprime les articles du détail de la facture qui sont sélectionnés dans la table T_Articles
        currentdb.execute "delete from Tbl_AcqDetail where AcqID_FK = " & nz(Me.AcqID_PK,0) & " and ProdID_FK in (select ProdID_PK from Tbl_Product where IsSelected=True)", dbFailOnError
     
        ' déselectionne tous les enregistrements de la table T_Articles
        currentdb.execute "update Tbl_Produc set IsSelected=False ;", dbFailOnError
     
        Me.Refresh ' rafraîchit le formulaire
     
    end sub

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    August 2004
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : August 2004
    Messages : 8 202
    Points : 19 286
    Points
    19 286
    Billets dans le blog
    60
    Par défaut
    Merci à vous, je tague résolu
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

Discussions similaires

  1. [Toutes versions] [Tutoriel] Créer un logiciel de caisse avec Access
    Par User dans le forum Access
    Réponses: 28
    Dernier message: 09/11/2022, 19h57
  2. Réponses: 8
    Dernier message: 04/11/2008, 12h05
  3. Mise à jour de champs aprés importation excel
    Par MAMANHOU dans le forum IHM
    Réponses: 3
    Dernier message: 15/10/2008, 17h23
  4. Opinion sur la mise à jour du stock en reseau
    Par kivoch dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/10/2007, 13h58
  5. Réponses: 2
    Dernier message: 02/05/2006, 23h09

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