Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

explication expression requete

5 réponses
Avatar
LR
Bonjour à tous,
dans une table (liée), j'ai un champ [A] contenant des 0 ou 1 en format texte.
Dans une requete je veux simplement compter le nbre d'enregistrements ayant
comme valeur 1.
J'ai essayé en écrivant dans la ligne champ de la requête:
nbre1: Compte([A]="1")
cela me donne le nbre d'enregistrement total et pas seulement ceux avec
valeur 1.

Mon prédécesseur avait entré cette expression:
nbre1: Somme(VraiFaux(CNum([A])>0;1;0))
celle-ci fonctionne bien.

voici mes questions:
-pourquoi mon "Compte" ne marche pas?
- est ce quelqu'un peut me donner l'explication en francais de la 2e?

j'espere que j'ai été assez clair
--
merci!

5 réponses

Avatar
LiR
Bonjour (cher "LR"!)

Je dirais :

-Somme ([A]="1")

Ne pas oublier le moins devant, puisque ([A]="1") renvoie True (-1) si vrai


Bonjour à tous,
dans une table (liée), j'ai un champ [A] contenant des 0 ou 1 en format texte.
Dans une requete je veux simplement compter le nbre d'enregistrements ayant
comme valeur 1.
J'ai essayé en écrivant dans la ligne champ de la requête:
nbre1: Compte([A]="1")
cela me donne le nbre d'enregistrement total et pas seulement ceux avec
valeur 1.

Mon prédécesseur avait entré cette expression:
nbre1: Somme(VraiFaux(CNum([A])>0;1;0))
celle-ci fonctionne bien.

voici mes questions:
-pourquoi mon "Compte" ne marche pas?
- est ce quelqu'un peut me donner l'explication en francais de la 2e?

j'espere que j'ai été assez clair
--
merci!


Avatar
Eric
Bonjour,



Mon prédécesseur avait entré cette expression:
nbre1: Somme(VraiFaux(CNum([A])>0;1;0))
est ce quelqu'un peut me donner l'explication en francais ?



Il faut commencer par la fonction la plus interne :
1- CNum([A])
On convertit le contenu du champ A en Numérique.
2- Puis VraiFaux(CNum([A])>0;1;0)
On teste si la conversion en numérique retourne une valeur supérieure à
0 par la fonction VraiFaux() qui correspond au Si() d'Excel (Si
Test_Logique;ActionSiVrai;ActionSiFaux)
donc pour chaque valeur du champ A, la fonction VraiFaux retournera 1 ou 0.
3- Enfin, on applique, sur la fonction VraiFaux(), la fonction Somme()
qui te retournera soit 0 soit une valeur > à 0 correspondant au nombre
de champ A contenant la valeur "1"

ok?
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
LR
merci LiR en effet ca fonctionne
mais je ne comprend pas pourquoi la fonction Compte n'est pas la bonne?
il me semble pourtant qu'en comptant les enregistrements ayant 1 ca devrait
marcher!? j'ai un pb de logique?
--
merci!
Avatar
LiR
En fait, la fonction Compte(expr) calcule le nombre d'enregistrements pour
lesquels l'argument expr n'est pas null.

Comme ([A]="1") vaut soit 0 (Faux) soit -1 (True), Compte([A]="1") renvoie
le nombre d'enregistrements puisque l'expression passée n'est jamais nulle.



merci LiR en effet ca fonctionne
mais je ne comprend pas pourquoi la fonction Compte n'est pas la bonne?
il me semble pourtant qu'en comptant les enregistrements ayant 1 ca devrait
marcher!? j'ai un pb de logique?
--
merci!


Avatar
Eric
re,

Il faudrait que le sql soit le suivant:
Select Count([A]) as nbre1 From LaTable
Where [A]="1";

Count([A]="1") n'existe pas.

merci LiR en effet ca fonctionne
mais je ne comprend pas pourquoi la fonction Compte n'est pas la bonne?
il me semble pourtant qu'en comptant les enregistrements ayant 1 ca devrait
marcher!? j'ai un pb de logique?


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr