Souci de requête pourcentage
Le
Ayrton [ASC]
Bonjour à tous,
Volià mon problème :
J'ai essayé de faire une petite appli pour lr boulot et bien que tout se
présentait bie, je rencontre un problème avec une requête pourcentage et un
seul nm de champ ; je m'explique :
J'ai un champs Societe qui est en vrai/faux ; on coche si c'est une societe
et on laisse si c'est un particulier.
J'aimerai faire une requête qui me donne le nombre ou plus exactement le
pourcentage de societe et de particuliers ; seulement je ne sais pas comment
faire car comme je n'ai qu'un seul nom de champs, je ne peux pas executer ma
requête ;-(
Voici ce que j'ai fait :
1) je cree une requête avec le nombre total de clients + le champs societe
dans lequel je mets " Vrai " comme critère ; cela me donne donc le nombre de
Societe
2) je fais la même chose en mettant " Faux " comme critère pour avoir le
nombre de Particuliers
Le souci est que quand je veux faire ma rerquête pourcentage, j'ai deux fois
le champs " Societe" de sélectioné et donc ça ne fonctionne pas.
Voilà la requête qui ne fonctionne pas :
SELECT QryTotalClients.CompteDeNuméro, QryParticuliers.Societe,
QrySocietes.Societe, Format([Societe]/[Societe],"Percent") AS Expr1
FROM QryParticuliers, QrySocietes, QryTotalClients;
Ca me parait normal que ça ne fonctionne pas mais je ne sais pas quoi
modifier ni comment ;-(
Merci de votre aide et de vos conseils
Cordialement
--
@+
Ayrton
http://cerbermail.com/?NiMhJk1y8Y
Date : Le 13/06/2005
Volià mon problème :
J'ai essayé de faire une petite appli pour lr boulot et bien que tout se
présentait bie, je rencontre un problème avec une requête pourcentage et un
seul nm de champ ; je m'explique :
J'ai un champs Societe qui est en vrai/faux ; on coche si c'est une societe
et on laisse si c'est un particulier.
J'aimerai faire une requête qui me donne le nombre ou plus exactement le
pourcentage de societe et de particuliers ; seulement je ne sais pas comment
faire car comme je n'ai qu'un seul nom de champs, je ne peux pas executer ma
requête ;-(
Voici ce que j'ai fait :
1) je cree une requête avec le nombre total de clients + le champs societe
dans lequel je mets " Vrai " comme critère ; cela me donne donc le nombre de
Societe
2) je fais la même chose en mettant " Faux " comme critère pour avoir le
nombre de Particuliers
Le souci est que quand je veux faire ma rerquête pourcentage, j'ai deux fois
le champs " Societe" de sélectioné et donc ça ne fonctionne pas.
Voilà la requête qui ne fonctionne pas :
SELECT QryTotalClients.CompteDeNuméro, QryParticuliers.Societe,
QrySocietes.Societe, Format([Societe]/[Societe],"Percent") AS Expr1
FROM QryParticuliers, QrySocietes, QryTotalClients;
Ca me parait normal que ça ne fonctionne pas mais je ne sais pas quoi
modifier ni comment ;-(
Merci de votre aide et de vos conseils
Cordialement
--
@+
Ayrton
http://cerbermail.com/?NiMhJk1y8Y
Date : Le 13/06/2005

Poser une question


Si j'ai bien compris tu n'as qu'une seule table (ici nommée LaTable.
Si c'est bien le cas, tu peux faire comme ca :
SELECT Format(Abs(Sum([societe]))/DCount("*","LaTable"),"Percent") AS
[%Societe],
Format(1-Abs(Sum([societe]))/DCount("*","LaTable"),"Percent") AS [%Client]
FROM LaTable;
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/micro...cess?hl=fr
Dans ton message de news:,
Tu as pensé très fort :-(*)
Bonjour Eric,
C'est toput à fait ça ;-)
Merci infiniement ! Ca fonctionne pil poil ! Je suis super content ! Merci
beaucoup.
Comme j'aime bien comprendre ce que l'on m'indique, sans vouloir abuser de
ta gentillesse pourrais tu me dire ce que veux dire :
1) "*"
2) j'ai du mal à traduire ceci : Format (1-Abs ........)
Je connais la fonction Sum et je vais me débrouiller pour " traduire " ce
que tu m'as gentillement fait mais pour ces deux choses, je sèche ! ! ;-(
Une dernière petite chose et ce sera tout :
Quand je selectionne mon champs Societe dans une requête en mode creation et
que comme critère j'indique " Faux ", je ne peux pas avoir le total en
faisant " Somme " ou " Compte ".
Est ce normal ??
Meric encore pour tout Eric
Bonne fin de soirée
Bien à toi
--
@+
Ayrton
http://cerbermail.com/?NiMhJk1y8Y
Date : Le 13/06/2005
Quand tu veux compter un nb d'enregistrement dans un jeu
d'enregistrements, tu n'as pas l'obligation de préciser le
champ.En d'autres termes, en utilisant la fonction DCount(),
écrire DCount("*","LaTable") ou DCount("LeChamp","LaTable")
retourne la même valeur.
Décomposons : une variable booléeenne prend les valeurs -1 pour
Vrai (ou Oui) et 0 pour Faux (ou Non). Si tu veux compter les
Vrai, il faut utiliser la fonction Somme(), et non la fonction
Compte ou Count() car celle ci denombrerait le nb de fois le
champ booléen quelque soit sa valeur.
Celle-ci va retourner une valeur négative, d'où l'emploi de
la fonction Abs(), puis de Format() pour afficher en %
La fonction
Format(Abs(Sum([societe]))/DCount("*","LaTable"),"Percent")
retourne le % de société. Cette valeur est comprise entre 0 et 1
même si tu l'affiches au format % (80% = 0.8)
Pour obtenir le nb de particuliers tu prends le complément à 1
de Format(Abs(Sum([societe]))/DCount("*","LaTable"),"Percent")
Donc Format(1- Abs(...)) retourne le % de particuliers puisque tu
n'as que 2 cas : Societe ou Particulier. C'est faux si plus
de 2 possibilités.
Le SQL pour avoir le nb de particuliers serait :
SELECT Count("*") AS [LeNbdeParticuliers]
FROM LaTable
WHERE societeúlse;
en te rappelant que tu peux mettre Count("societe") ou
Count("LeChamp") à la place de Count("*")
Par contre, remplacer Count("societe"]) par Sum([societe])
dans le SQL ci-dessus te renverrait 0 puisque societe à Faux
vaut 0 et la somme de 0 est égale à 0.
J'espère que c'est devenu un peu plus clair
Cordialement
--
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/micro...cess?hl=fr
Quelques petites erreurs de frappe, il se fait tard ;-) les doigts ne
sont plus aussi agiles.
Lire :
Count([societe]) pour Count("societe")
ou Count([LeChamp]) à la place de Count("*")
et
Count([societe]) à la place de Count("societe"])
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/micro...cess?hl=fr
Dans ton message de news:uy8NZ$,
Tu as pensé très fort :-(*)
Re Eric,
C'est normal en fin de journée ;-
Merci 1000 fois pour ta gentillesse.
je prends bonne note de tes explications très claires et je me les mets dans
un petit coin car je sais qu'à un moment ou un autre j'en aurais besoin; je
penserai à toi à ce moment là ;-)
Merci pour tout Eric
Bonne fin de soirée
Bien à toi
--
@+
Ayrton
http://cerbermail.com/?NiMhJk1y8Y
Date : Le 13/06/2005