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 28/01/2012, 12h56   #1
Invité de passage
 
Inscription : avril 2004
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 10
Points : 2
Points : 2
Par défaut Calculer le montant moyen de commande

Bonjour,

J'ai une tout petite application qui me permet de gérer des commandes pour une activité commerciale. Pour cela j'ai 2 tables :

Clients (qui contient les références et coordonnées des mes clients)
Commandes (articles, quantité, montant total)

(ces 2 tables sont liées grâce au champ "N° client")

je souhaiterai rajouter à la table "client" un champ "montant moyen de commandes" et mettre à jour ce champs pour chacun de mes clients à l'aide du montant de chacune de leur commande figurant dans la table "commande"

Quelle est la meilleure façon de faire cela ?

Merci de votre aide
christophesav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 13h34   #2
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 077
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 077
Points : 4 399
Points : 4 399
Envoyer un message via Skype™ à GAYOT
Bonjour
Pourquoi ajouter ce champ dans une table, alors que ce calcul peut être fait à n'importe quel moment par une requête?
Surtout qu'à chaque nouvelle commande, il faudra refaire un calcul et mise à jour de la table.
__________________
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 28/01/2012, 14h14   #3
Invité de passage
 
Inscription : avril 2004
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 10
Points : 2
Points : 2
Bonjour,

En fait, ces 2 tables sont liées chacune à une liste sharepoint (équivalent d'une table). l'affichage statique de ces listes pouvant se faire directement, par un simple navigateur web, je souhaiterai pouvoir mettre à jour périodiquement ce champ au travers d'un "script" access afin que les utilisateurs de sharepoint puissent disposer de cette information directement au niveau de la liste "Client". Le fait qu'elle ne prenne pas en compte les commandes passées depuis la dernière exécution du script n'est pas très important...

Merci de votre réponse.
christophesav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 10h23   #4
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 077
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 077
Points : 4 399
Points : 4 399
Envoyer un message via Skype™ à GAYOT
Bonjour
Ca ne va pas être très simple.
Le premier réflexe est de faire une requête "Qry_Moyennes" calculant les moyennes par client., puis de faire une requête de mise à jour de ta table Clients à partir de "Qry_Moyennes".
Malheureusement Access n'accepte pas les requêtes de mise à jour faisant intervenir une autre requête.
Une solution consiste à créer une table temporaire "Tbl_Temp" à partir de la requête "Qry_Moyennes"
Puis la requête de mise à jour de "Tbl_Clients" se fera à partir de "Tbl_Temp"

Requête "Qry_Moyennes"
Code :
1
2
3
SELECT Tbl_Commandes.N°_Client, Avg(Tbl_Commandes.Montant_Total) AS MoyenneDeMontant_Total
FROM Tbl_Commandes
GROUP BY Tbl_Commandes.N°_Client;
Puis création table temporaire "Qry_CreaTblTemp"
Code :
1
2
SELECT * INTO Tbl_Temp
FROM Qry_Moyennes;
Puis requête de mise à jour "Qry_UpdateTblClients"
Code :
1
2
UPDATE Tbl_Clients, Tbl_Temp SET Tbl_Clients.Moyenne = Tbl_Temp.MoyenneDeMontant_Total
WHERE (((Tbl_Temp.N°_Client)=[Tbl_Clients].[N°_Client]));
A adapter bien sûr avec les noms des tables et champs précis.
__________________
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
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h12.


 
 
 
 
Partenaires

Hébergement Web