{Access} 2003 requete parametré en %

Fermé
l-dag Messages postés 23 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 30 juillet 2009 - 23 juil. 2009 à 14:10
l-dag Messages postés 23 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 30 juillet 2009 - 29 juil. 2009 à 15:58
Bonjour,

Je suis débutant sur access (2003), et je ne maitrise pas le langage SQL.

Voila mon pb : j'ai des affaires notéés de 1 à 3. Par une requete, je voudrais compter le nombre d'affaires ayant une moyenne supérieure à 2 (j'ai déja fait les moyennes par affaires).

Pour les compter ce n'est pas difficile mais comment fait-on pour avoir le pourcentage d'affaires ayant une moyenne supérieure ou égale à 2 ?

Exemple : sur 4 affaires, 2 ont une moyenne supérieure à 2 > 50 % ont donc une moyenne supérieure à 2.

Par avance merci pour vos réponses

41 réponses

l-dag Messages postés 23 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 30 juillet 2009
24 juil. 2009 à 09:23
SVp l'un de vous peut me venir en aide?

Merci bcp
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
24 juil. 2009 à 12:06
Bonjour,

Le code suivant devrait faire ce que tu veux
SELECT ( count(Nomcolonne) / (SELECT count(Nomcolonne) FROM Nomtable)) / 100.
FROM Nomtable
WHERE Nomcolonne > 2

Tu dois bien sur remplace Nomcolonne par le nom de la colonne contenant la moyenne et Nomtable par le nom de ta table.
A plus
0
l-dag Messages postés 23 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 30 juillet 2009
24 juil. 2009 à 12:19
Merci christounet.

Par contre, ou dois-je remplir ce code ?

Sachant que j'ai fait une requete visant à trouver les affaires ayant une note > 2 ; et que je peux les visualiser dans un état.

Désolé mais les codes VBA et langages SQL ne sont pas mes forts...

PS : Merci de votre réponse si rapide

Cordialement
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
24 juil. 2009 à 13:56
Bonjour,

Il suffit d'introduire le code dans le mode sql, tu trouveras ici comment accéder a ce mode lors de la création d'une requête.
A plus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
l-dag Messages postés 23 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 30 juillet 2009
24 juil. 2009 à 14:35
Ok merci.

SELECT (Count(Moyenne)/(SELECT count(Moyenne) FROM Moyenne_par_Affaires))/100 AS Expr1
FROM Moyenne_par_Affaires
WHERE (((Moyenne_par_Affaires.Moyenne)>2));

J'ai tapé ce code; sachant que "moyenne_par_affaires" est une requete et non une table ( requete par laquelle je suis passé pour calculer la moyenne / affaires.

J'ai comme résultat 0,006 ce qui est très étonnant. Il y a 6 affaires étant supérieure à 2 sur 34. Je devrais donc trouver comme résultat environ 20% ; ce n'est pas le cas.

Sinon ma requete calculant la moyenne par affaires est nikel. Voici le code :
SELECT Affaires.Nom_affaire, Sum(Moyenne_par_Affaires.Moyenne) AS SommeDeMoyenne
FROM Affaires INNER JOIN Moyenne_par_Affaires ON Affaires.Nom_affaire = Moyenne_par_Affaires.Nom_affaire
GROUP BY Affaires.Nom_affaire
HAVING (((Sum(Moyenne_par_Affaires.Moyenne))>2));


Ce n'est pas plus pratique d'ajouter une info dans ce code pour obtenir ce que je souhaite ?
0
l-dag Messages postés 23 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 30 juillet 2009
24 juil. 2009 à 14:38
Pardon ce code est celui que j'ai utilisé pour obtenir les affaires ayant une note supérieur à 2.
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
24 juil. 2009 à 14:50
Bonjour,

J'avoue que j'ai du mal à comprendre ta requête, elle ne compte pas le nombre d'affaire ayant une note > 2 mais fais la somme des moyennes et uniquement si la somme des moyennes est plus grande que 2.
Peux-tu en mode sql exécuté les deux ordres suivants
SELECT count(Moyenne_par_Affaires.Moyenne)
FROM Moyenne_par_Affaires
et
SELECT count(Moyenne_par_Affaires.Moyenne)
FROM Moyenne_par_Affaires
WHERE Moyenne_par_Affaires.Moyenne > 2
et me communiquer les résultats.
Merci et à plus
0
l-dag Messages postés 23 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 30 juillet 2009
24 juil. 2009 à 15:16
Re,

Autant pour moi le code que tu m'as donné précédemment est parfait : Merci BEAUCOUP!!
J'obtiens 60%, soit le rapport d'affaires notées ayant une moyenne supérieure à 2 : donc ce que je souhaitais!

J'ai réalisé les 2 autres requetes que tu m'as demandé.
La première :
SELECT count(Moyenne_par_Affaires.Moyenne)
FROM Moyenne_par_Affaires
...me donne un résultat de 10.

Cela correspond au nombre d'affaires notées. D'ailleurs je voudrais connaitre le pourcentage du nombre d'affaires notées (il y en a donc 10 sur 34). J'imagine qu'il ya une légère info à ajouter au code ci-dessous, une idée?

Quant à la deuxième requete que tu m'as demandé de réaliser, j'obtiens 6, soit le nombre d'affaires ayant une note supérieure à 2.
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
24 juil. 2009 à 15:34
Bonjour,

En supposant que ta table Affaires contient toutes les affaires, notées ou non, le code devrait être
SELECT (count(Moyenne_par_Affaires.Moyenne)/(SELECT count(*) FROM Affaires))/100. As PourcentAffaire
FROM Moyenne_par_Affaires

A plus
0
l-dag Messages postés 23 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 30 juillet 2009
24 juil. 2009 à 15:50
Effectivement bravo tu es un AS!

Du coup j'en profite pour te demander une autre info (sauf si tu es occupé et que tu en a assez de m'aider ce que je comprendrais..) : La dernière requete en question que tu m'as donné me sert donc à voir le % du nombre d'affaires ayant été notées.

Je fais cela pour une évaluation qualité. Cette évaluation concerne le % de notes ayant été récoltées à la date de commande, et est calculée semestres par semestres.
J'imagine qu'il faut ajouter ce champ mais il doit exister un critère particulier afin de faire le calcul par semestre. Encore une fois je fais appel à ton cerveau, une idée ?

Encore merci!!
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
24 juil. 2009 à 15:59
Bonjour,

Tout d'abord, cela me fait plaisir d'aider les gens, et comme je ne suis pas surchargé de travail pour le moment, si tu pouvais me donner la définition complète de ta table (les colonnes ainsi que le type), je devrais pouvoir t'aider.
A plus
0
l-dag Messages postés 23 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 30 juillet 2009
24 juil. 2009 à 16:16
Pas besoin de mes tables.

La formule suivante que tu m'as donné me sert à calculer le % du nombres d'affaires notées :
SELECT (Count(Moyenne_par_Affaires.Moyenne)/(SELECT count(*) FROM Affaires)) AS PourcentAffaire
FROM Moyenne_par_Affaires;

En fait j'ai des notations par affaires en conception. Je veux savoir le nombre d'affaires ayant été notées en conception ; et ce calcul se fait semestre par semestre.


Ci joint une capture d'écran de ma structure. Je crois qu'il existe des imperfections, qu'en penses -tu ?

Je m'explique : Le but c'est : 1) Je rentre une affaire avec ses infos
2) Je rentre les fournisseurs intervenant dans l'affaire avec les infos correspondantes (contact, etc..)
3) Si le nom du fournisseur n'est pas répertorié, je l'ajoute dans ma table Nom_cabinet_fournisseur
4) J'attribue une note aux fournisseurs sur plusieurs critères (en conception et en éxécution).

Mon problème est à la deuxième étape : une fois l'affaire et les infos correspondantes rentrées, je n'arrive pas à remplir ma table fournisseur car elle est liée aux autres tables (dixit l'aide access). Le but d'access étant de lier les infos entre elles j'ai du faire une erreur mais laquelle ?

Cordialement et en te remerciant à nouveau!

PS : J'ai fait une impression écran que je n'arrive pas à joindre...
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
24 juil. 2009 à 16:28
Bonjour,

Tu peux déposer ton impression d'écran sur ce site et ensuite copier/collier le lien dans ta réponse.
Exemple: http://www.cijoint.fr/cjlink.php?file=cj200907/cijn1vAFfu.jpg
A plus
0
l-dag Messages postés 23 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 30 juillet 2009
24 juil. 2009 à 16:34
http://www.cijoint.fr/cjlink.php?file=cj200907/cijOZ4ROq9.doc

Merci, j'en apprends toutes les 10 minutes avec toi c'est parfait!!
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
24 juil. 2009 à 17:14
Bonjour,

Basé sur ton écran et d'après ce que j'ai compris tu trouveras ici comment je pense que tu dois organiser tes tables.
1°) Table Affaires avec comme clé unique (Nom_Affaire)
2°) Table Coordonnées avec comme clé unique (Nom_Fournisseur)
3°) Table Fournisseurs avec comme clé unique (Nom_Affaire , Nom_Fournisseur)
4°) Table Suivi_Fournisseur avec comme clé unique (Nom_Affaire, Nom_Fournisseur, Type_De_Compétence)

Type_De_Compétence pouvant valoir C(onception) ou E(xecution)

De cette façon tu peux très facilement utiliser ta table Suivi_Fournisseur pour calculer tes moyennes,
Concernant le calcul semestre par semestre, est-ce-que tu te bases sur la date_prise_commande ou bien sur une autre date (bien que je n'ai pas vu d'autre date dans tes relations) ?
A plus
0
Bonjour, j'espère que le we était agréable

J'ai suivi tes conseils en partie. J'ai laissé mes 2 tables suivi-fournisseurs par contre car il serait trop long de tout recopier.

J'ai tjr le meme problème : je remplis ma table affaire : ok
Ensuite j'entre mes fournisseurs dans ma table fournisseurs mais impossible de modifier l'enregistrement car lié aux table de suivi.

Est-car je suis obligé de regroupé mes 2 tables suivi?

Cordialement,
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
27 juil. 2009 à 11:31
Bonjour,

Le weekend s'est très bien passé, merci.
Concernant ton problème, qu'entends-tu par modifier l'enregistrement fournisseur car lié aux tables de suivis, as-tu définis des clés étrangères ?

A plus
0
Re,

Non j'ai défini une nouvelle clé dans ma table fournisseurs mais elle est liée à la table "cabinet fournisseur";

Mots pour mots voila ce qui est dit : "Vous ne puvez pas ajouter ou modifier un enregistrement car l'enregistrement associé est requis dans la table 'suivi fournisseurs conception'.

Ci joint une capture de mes tables & relations
http://www.cijoint.fr/cjlink.php?file=cj200907/cijNS0g8XW.doc
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
27 juil. 2009 à 12:05
Bonjour,

Selon ton schéma, tu as défini une relation "One To Many" entre Suivi Fournisseur Conception et Fournisseur basée sur ID_Affaire , cela veut dire que tu peux avoir plusieurs enregistrements dans ta table Fournisseur pour un et un seul enregistrement dans ta table Suivi Fournisseur Conception et que l'enregistrement doit d'abord existé dans cette dernière table avant d'être crée dans la table Fournisseur, donc je pense que la définition de cette relation n'est pas correcte.
1°) Ta colonne ID_Affaire est auto incrémentée?
2°) Un fournisseur peut-il être à la fois dans ta table Suivi Fournisseur Conception et Suivi Fournisseur Exécution pour le même ID_Affaire ?
A plus
0
Oui un fournisseur dans ma table "fournisseurs" à un numéro auto qui lui est attribué lors de la saisie.

De meme, il a le meme Id_affaire pour les 2 tables "suivi". Effectivement avec un peu plus de recul, je pense que j'aurai du regroupé l'éxécution et la conception dans une meme table. (Manuellement j'ai du recopier les memes numéros fournisseurs dans chaque table de suivi).

Mais pour une question de visibilité j'ai préféré séparer les 2 tables.
0