Voir le flux RSS

User

Gestion de stock sous Access

Noter ce billet
par , 27/10/2014 à 17h26 (820 Affichages)
Objectif

On souhaite réaliser une gestion de stock sous Access, pour cela on a besoin de 3 tables :

La table "T_Produit" réduite au strict minimum :

  • NumProduit: Numéro-auto (clé primaire)
  • NomProduit: Texte
  • PrixUnit: Monétaire
  • QteMin: Entier long


La table "T_Mouvement" pour enregistrer les entrées/sorties du stock :

  • NumMouvement: Numéro-auto (clé primaire)
  • DateMouvement: Date
  • NumProduit: Entier long (clé étrangère)
  • QteMouvement: Entier long
  • TypeMouvement: Texte (Entrée/Sortie)



La table "T_Inventaire" pour enregistrer les inventaires sur le stock :

  • NumInv: Numéro-auto (clé primaire)
  • DateInv: Date
  • NumProduit: Entier long (clé étrangère)
  • QteInv: Entier long


On construit la requête "R_Inventaire" qui affiche le dernier inventaire :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT T_Inventaire.NumInv, T_Inventaire.NumProduit, T_Inventaire.QteInv, T_Inventaire.DateInv
FROM T_Inventaire
WHERE T_Inventaire.DateInv In (select Max([DateInv]) from T_Inventaire T1 where T1.NumProduit=T_Inventaire.NumProduit;);

Ensuite, on va réaliser une requête "R_Mouvement" qui affiche les mouvements suivant le dernier inventaire (date de mouvement >= date du dernier inventaire) :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT T_Mouvement.NumProduit, Nz(Sum(IIf([TypeMouvement]="Entrée",[QteMouvement],-[QteMouvement])),0) AS QteMouv
FROM R_Inventaire RIGHT JOIN T_Mouvement ON R_Inventaire.NumProduit = T_Mouvement.NumProduit
WHERE (T_Mouvement.DateMouvement)>=Nz([DateInv],#1/1/1000#)
GROUP BY T_Mouvement.NumProduit;

Enfin, on réalise la requête "R_Stock" qui donne l'état du stock actuel et qui effectue une jointure gauche entre la table "T_Produit" et les 2 requêtes précédentes :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT T_Produit.NumProduit, T_Produit.NomProduit, R_Inventaire.QteInv, T_Produit.QteMin AS QteMini, Nz([QteInv],0)+Nz(Sum(R_Mouvement.QteMouv),0) AS Qte
FROM (T_Produit LEFT JOIN R_Mouvement ON T_Produit.NumProduit = R_Mouvement.NumProduit) LEFT JOIN R_Inventaire ON T_Produit.NumProduit = R_Inventaire.NumProduit
GROUP BY T_Produit.NumProduit, T_Produit.NomProduit, R_Inventaire.QteInv, T_Produit.QteMin
ORDER BY T_Produit.NumProduit, T_Produit.NomProduit;

Conclusion

Cette requête sera alors facilement exploitable comme source d'un formulaire.
Miniatures attachées Fichiers attachés

Envoyer le billet « Gestion de stock sous Access » dans le blog Viadeo Envoyer le billet « Gestion de stock sous Access » dans le blog Twitter Envoyer le billet « Gestion de stock sous Access » dans le blog Google Envoyer le billet « Gestion de stock sous Access » dans le blog Facebook Envoyer le billet « Gestion de stock sous Access » dans le blog Digg Envoyer le billet « Gestion de stock sous Access » dans le blog Delicious Envoyer le billet « Gestion de stock sous Access » dans le blog MySpace Envoyer le billet « Gestion de stock sous Access » dans le blog Yahoo

Mis à jour 04/03/2017 à 15h42 par User

Catégories
Gestion de stock sous Access

Commentaires