Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/08/2011, 11h18   #1
Candidat au titre de Membre du Club
 
Homme Mateus Rui
Développeur .NET
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Mateus Rui
Localisation : Angola

Informations professionnelles :
Activité : Développeur .NET
Secteur : Services à domicile

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 10
Points : 10
Par défaut Actualisation automatique du Stock dans la table T_Produits

* Bonjour *

J'ai créé une base de données access, j'ai trois tables: T_produits(Stock), T_Vente(Qté), T_Réceptions(Qté):

Je voudrais que le Champs "Stock" dans la table T_Produits soit automatiquement actualisé.

Lorsque(Chaque fois) que le produit est vendu dans la table T_Ventes il y aura réduction(de la Qté vendue) du stock dans la table t_Produits.

Lorsque(Chaque fois) que le produit est réceptonné dans la table T_Ventes il y aura augumentation(de la Qté réçue) du stock dans la table T_Produits.

Pouriez-vous me dire comment faire pour réussir cet automatisme ?

Rui Mateus
Ruimateus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 11h44   #2
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 074
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 074
Points : 4 381
Points : 4 381
Envoyer un message via Skype™ à GAYOT
Bonjour
Et pourquoi vouloir stocker une donnée changeant en permanence.
Une requête au moment opportun ne suffit pas?
La conception des tables n'est peut être pas judicieuse. IL y a pas mal de sujets sur ce thème sur le forum.

Sinon il faut passer par les requêtes de mise à jour.
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 12h04   #3
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 446
Points : 4 446
Bonjour,

on peut commencer par écrire une procédure de mise à jour du stock avec une requête SQL UPDATE, du genre :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Public Sub MAJStock(idProduit As long, qtte as integer)
Dim strSQL as String
On Error Goto Err_MAJStock
 
strSQL = "UPDATE T_Produit SET stock=stock+" & qtte
strSQL = strSQL & " WHERE idProduit=" & idProduit & ";" 
 
  currentdb.execute strSQL, dbFailOnError
 
exit sub
 
Err_MAJStock:
  MsgBox Err.description, vbCritical, "Erreur n°" & Err.number
End Sub
Procédure à lancer sur les bons évènements de ton formulaire (qtte<0 ou qtte>0 selon décrément/incrément du stock).

[EDIT] ...et GAYOT qui était passé par là et que je salue au passage [/EDIT]
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 13h16   #4
Candidat au titre de Membre du Club
 
Homme Mateus Rui
Développeur .NET
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Mateus Rui
Localisation : Angola

Informations professionnelles :
Activité : Développeur .NET
Secteur : Services à domicile

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 10
Points : 10
La table T_produits à cet éffet contient les Champs suivants: ProdID, Description(nom du produit) et Stock.
Ces champs seront enregistrés une seule fois pendant le premier inventaire.
Le champs ProdID est numéro automatique, le champs Description sera actualisé manuellement en cas de récéption d'un nouveau produit.
Après le premier inventaire le champs stock est mouvementé par les entrées et les sorties à partir des ventes et réceptions.
Les requêtte ne servirons que pour le suivi des sorties et des entrées.

NB.Si le magasinier enregistre un produit dans les tables T-Ventes et T-Réceptions et le produit ne fugure pas dans la table T_Produit il reçoit un message d'erreur.

Fabien le code est à lancer dans l'environnement VB ou dans un macros ?

pour les entées je tape le code :
Code :
1
2
 strSQL = "UPDATE T_Produit SET stock=stock+" & qtte
strSQL = strSQL & " WHERE idProduit=" & idProduit & ";"
Et pour les sorties fe tape lecode :
Code :
1
2
 strSQL = "UPDATE T_Produit SET stock=stock-" & qtte
strSQL = strSQL & " WHERE idProduit=" & idProduit & ";" ?
Merci de tes précisions pour que je les implémentes rapidement.

Ruimateus
Ruimateus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 19h36   #5
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 446
Points : 4 446
Re,

avec des parenthèses autour de qtte si tu préfères:
Code :
1
2
strSQL = "UPDATE T_Produit SET stock=stock + (" & qtte & ")"
strSQL = strSQL & " WHERE idProduit=" & idProduit & ";"
la procédure MAJStock peut être appelée aussi bien pour les entrées (qtte>0) et les sorties du stock (qtte<0).

La procédure est à copier/coller (adapter les noms des tables et champs) dans un module VBA (ALT+F11 puis Insertion>Module).
Pour la tester, dans la fenêtre d’exécution (CTRL+G), tu tapes par exemple:

Pour 10 entrées du produit n°1

Pour 5 sorties du produit n°1

Constater les modifications dans la table des produits.

Il faut maintenant appeler la procédure sur procédure évènementielle de ton formulaire de création des mouvements d’entrée/sortie (ou réception/vente). Tu as bien un formulaire pour ça ?
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 17h16   #6
Candidat au titre de Membre du Club
 
Homme Mateus Rui
Développeur .NET
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Mateus Rui
Localisation : Angola

Informations professionnelles :
Activité : Développeur .NET
Secteur : Services à domicile

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 10
Points : 10
En appliquant le code suivant:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Option Compare Database
 
strSQL = "UPDATE T_Produits SET stock=stock + (" & Qte & " ")
strSQL = strSQL & " WHERE T_Receptions.ProdID=" & T_Produits.ProdIDid & ";"
strSQL = "UPDATE T_Produits SET stock=stock - (" & Qte & ")"
strSQL = strSQL & " WHERE T_Ventes.ProdID=" & T_Produits.ProdIDid & ";"
 
Sub Actualiserstock()
strSQL = "UPDATE T_Produits SET stock=stock + (" & Qte & ")"
strSQL = strSQL & " WHERE T_Receptions.ProdID=" & T_Produits.ProdIDid & ";"
strSQL = "UPDATE T_Produits SET stock=stock - (" & Qte & ")"
strSQL = strSQL & " WHERE T_Ventes.ProdID=" & T_Produits.ProdIDid & ";"
 
End Sub
J'obtien le message d'erreur:

Erreur de compilation.

Attendu: fin d'instruction

Ruimateus
Ruimateus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 17h07   #7
Candidat au titre de Membre du Club
 
Homme Mateus Rui
Développeur .NET
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Mateus Rui
Localisation : Angola

Informations professionnelles :
Activité : Développeur .NET
Secteur : Services à domicile

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 10
Points : 10
Bonjour,

J'ai essayer avec le code suivant: le code vient de passer sans message d'erreur mais quand je fais des entrées(dans T_Receptions) et des sorties(dans T_Ventes) les stock ne varie pas dans T_Produits.

Qu'est-ce qui fait que le stock e varie pas ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Public Sub MAJStock(ProdID As Long, Qte As Integer)
Dim strSQL As String
On Error GoTo Err_MAJStock
 
strSQL = "UPDATE T_Produits SET stock=stock+" & Qte
strSQL = strSQL & " WHERE ProdID=" & ProdID & ";"
 
CurrentDb.Execute strSQL, dbFailOnError
 
Exit Sub
 
Err_MAJStock:
MsgBox Err.Description, vbCritical, "Erreur n°" & Err.Number
End Sub
Sub stockplus()
Dim strSQL As String
strSQL = "UPDATE T_Produits SET stock=stock+" & Qte
strSQL = strSQL & " WHERE ProdID=" & ProdID & ";"
Call MAJStock(1, 5)
Call MAJStock(1, -5)
End Sub
Merci pour votre aide.

Ruimateus
Ruimateus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 17h25   #8
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
bjr,

par hasard :
Code :
1
2
3
 
Call MAJStock(1, 5)
Call MAJStock(1, -5)
ça ferait pas +5 -5 = 0 ?
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h49.


 
 
 
 
Partenaires

Hébergement Web