Statistiques VBA [Résolu]

Signaler
Messages postés
43
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
9 juin 2010
-
Messages postés
43
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
9 juin 2010
-
Bonjour,

Je réalise actuellement une application qui permet de gérer les clients d'une entreprise avec une base Access.
J'ai une table Ville qui a pour identifiant un numéro auto et une table Client qui a un champ NumVille faisant référence à l'identifiant de la table Ville.
Je veux afficher certaines statistiques de ma base de données (combien de clients, etc...) et je voudrais savoir dans quelle ville se trouve le plus grand nombre de client mais je ne sais pas comment faire pour avoir cette donnée.


Si quelqu'un pouvait m'aider...
Merci

7 réponses

Messages postés
43
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
9 juin 2010

Bonjour

J'ai résolu mon problème. Dans ma table Ville, j'ai rajouté un champ NombreClient et à chaque fois que j'ajoute un client j'incrémente ce champs pour la ville sélectionnée. Ensuite pour savoir la ville la plus fréquentée, je fait :
 select * from Ville order by NombreClient desc

Le premier enregistrement que je fais est forcément la ville qui a le plus de client donc la plus fréquentée
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
Salut
Ma première idée serait de faire une requète SQL demandant de compter les "ville_id" dans les fiches Clients et demander une liste classée par ordre de grandeur. Tu n'auras plus qu'à en extraire le premier résultat pour trouvé le gagnant.
Requète du genre (à approfondir) :
Select Count(Clients.Ville_id), Villes.Name
  From Villes, Clients
 Where Clients.Ville_id = Villes.Ville_id
 Group by Clients.Ville_id

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
43
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
9 juin 2010

J'ai essayé ce que tu m'as proposé mais j'ai l'erreur suivante :
"Vous avez essayé d'exécuter un requête ne comprenant pas l'expression spécifié Name comme une partie de la fonction d'agrégat"

Je n'ai pas la moindre idée de ce que c'est
Messages postés
22
Date d'inscription
jeudi 10 août 2006
Statut
Membre
Dernière intervention
8 juillet 2010

Salut,

remplace Villes.Name par le champ ou tu met le nom de la ville dans ta table Villes...
------------
Même joueur joue encore
Messages postés
43
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
9 juin 2010

C'est ce que j'ai fait
En fait ma table Client est composée (en gros)des champs suivants :
- IdClient (numero auto)
- NomClient (texte)
- VilleClient (integer)

Ma table Ville est composée des champs suivants :
- IdVille (numéro auto)
- NomVille (texte)
- CodePostal (integer)

Donc ma requête ça donne :
Select Count(Client.VilleClient), Ville.NomVille
  From Ville, Client
 Where Client.VilleClient = Ville.IdVille
 Group by Client.VilleClient


Mais j'ai toujours la même erreur
Messages postés
22
Date d'inscription
jeudi 10 août 2006
Statut
Membre
Dernière intervention
8 juillet 2010

Ce ne serait pas plutôt :

Select Count(Client.IdVille), Ville.NomVille
From Ville, Client
Where Client.IdVille = Ville.IdVille
Group by Client.IdVille


Mélange pas les pommes de terre et les ananas. C'est pas bon ^^.
------------
Même joueur joue encore
Messages postés
43
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
9 juin 2010

Non, le champs de ma table Client faisant référence à la Ville porte le nom de VilleClient. Donc normalement ça devrait bien être Client.VilleClient = Ville.IdVille