OVH Cloud OVH Cloud

count distinct dans un état?

4 réponses
Avatar
Alain Bourgeois
Chers tous,

(access 2000)
j'ai un état avec un pied de groupe comprenant l'expression:
=Compte([patient]) & " patient"

J'aimerais compter le nombre de patients DIFFERENTS (si le même patient
apparait sur deux lignes, il est compté deux fois, cela est exactement
le même que =Compte(*) & " patient").

L'expression =Compte(distinct [Patient]) & " patient") est refusée.

Quelqu'un connait-il une solution?

Merci,
Alain

4 réponses

Avatar
Eric
Bonjour Alain,

Une méthode "un peu lourde" car le Select Count(Distinct Champ) n'est
pas supporté par Access (du moins Access2K et avant).

Tu crées une requête avec sous requête qui te retourne l'équivalent du
Select Count(Distinct Champ), tu la sauves, puis en source de ton
contrôle zone de texte au pied du groupe tu vas récupérer la valeur via
un RechDom() avec critère dans cette requête.

Exemple tout à fait fictif: une table client avec des homonymies de nom
pour une ville. On veut créer un état avec regroupement par ville et en
pied de groupe un champ affichant le nb de clients ayant un nom
différent dans une même ville.

1-création de la requête, sauvée sous le nom de NbClientsDistincts:
Le SQL serait du genre:
SELECT B.ville_client, Count(*) AS nb
FROM (SELECT DISTINCT A.nom_client, A.ville_client
FROM tclient as A ) AS B
GROUP BY B.ville_client;

2-Dans la propriété source contrôle de la zone de texte figurant en pied
de groupe, en supposant donc le regroupement se fait sur le champ
ville_client:
=RechDom("nb";"NbClientsDistincts";"ville_client='" & [ville_client] &
"'") & " nom(s) différent(s)"

Si ça peut t'aider.


Chers tous,

(access 2000)
j'ai un état avec un pied de groupe comprenant l'expression:
=Compte([patient]) & " patient"

J'aimerais compter le nombre de patients DIFFERENTS (si le même patient
apparait sur deux lignes, il est compté deux fois, cela est exactement
le même que =Compte(*) & " patient").

L'expression =Compte(distinct [Patient]) & " patient") est refusée.

Quelqu'un connait-il une solution?

Merci,
Alain









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

Avatar
Alain Bourgeois
C'est bcp trop lourd car il y a des sous-groupes, donc ce n'est pas si
simple.
C'est d'autant plus bête que count(patient) est accepté, mais aec un résultat
identique à count(*)


Eric wrote:

Bonjour Alain,

Une méthode "un peu lourde" car le Select Count(Distinct Champ) n'est
pas supporté par Access (du moins Access2K et avant).

Tu crées une requête avec sous requête qui te retourne l'équivalent du
Select Count(Distinct Champ), tu la sauves, puis en source de ton
contrôle zone de texte au pied du groupe tu vas récupérer la valeur via
un RechDom() avec critère dans cette requête.

Exemple tout à fait fictif: une table client avec des homonymies de nom
pour une ville. On veut créer un état avec regroupement par ville et en
pied de groupe un champ affichant le nb de clients ayant un nom
différent dans une même ville.

1-création de la requête, sauvée sous le nom de NbClientsDistincts:
Le SQL serait du genre:
SELECT B.ville_client, Count(*) AS nb
FROM (SELECT DISTINCT A.nom_client, A.ville_client
FROM tclient as A ) AS B
GROUP BY B.ville_client;

2-Dans la propriété source contrôle de la zone de texte figurant en pied
de groupe, en supposant donc le regroupement se fait sur le champ
ville_client:
=RechDom("nb";"NbClientsDistincts";"ville_client='" & [ville_client] &
"'") & " nom(s) différent(s)"

Si ça peut t'aider.

Chers tous,

(access 2000)
j'ai un état avec un pied de groupe comprenant l'expression:
=Compte([patient]) & " patient"

J'aimerais compter le nombre de patients DIFFERENTS (si le même patient
apparait sur deux lignes, il est compté deux fois, cela est exactement
le même que =Compte(*) & " patient").

L'expression =Compte(distinct [Patient]) & " patient") est refusée.

Quelqu'un connait-il une solution?

Merci,
Alain









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



Avatar
3stone
Salut,

"Alain Bourgeois"
[...]
| C'est d'autant plus bête que count(patient) est accepté, mais aec un résultat
| identique à count(*)


Il y a une *grosse* différence entre les deux pourtant !

Count(*)
compte tous les enregistrements, toutes les lignes...


alors que

Count([lechamp])
ne compte que les enregistrements dans lequels [lechamp] n'est pas Null...


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Alain Bourgeois
Dans mon cas, c'est un champs obligatoire faisant partie de la clé primaire.

3stone wrote:

Salut,

"Alain Bourgeois"
[...]
| C'est d'autant plus bête que count(patient) est accepté, mais aec un résultat
| identique à count(*)

Il y a une *grosse* différence entre les deux pourtant !

Count(*)
compte tous les enregistrements, toutes les lignes...

alors que

Count([lechamp])
ne compte que les enregistrements dans lequels [lechamp] n'est pas Null...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/