OVH Cloud OVH Cloud

Requête

3 réponses
Avatar
Régis Allevy
Bonjour à tous,

Soit une table "Personnes" contenant, entre autres, un champs "Age".

Je voudrais faire une requête sur ce champs, pour avoir comme résultat le
compte des personnes de moins de 70 ans, des plus de 90 ans et de celles
ayant entre 70 et 90 ans.
Est-ce possible de faire ça avec une seule requête?

Merci de m'avoir lu,
Régis

3 réponses

Avatar
Raymond [mvp]
Bonjour.

il ne faut pas mémoriser l'age dans la table, mais simplement la date de
naissance pour pouvoir recalculer l'age à chage fois.
l'age sera calculée par une fonction public placée dans un module standard.
le comptage sera fait par la fonction DCount.
1- créer une requête pour calculer l'age:
SELECT table1.Madate, age([madate]) AS SonAge FROM table1;
2- placer la fonction age (trouvée sur
http://officesystem.access.free.fr/vba/calculs.htm#age_en_annees_dans_une_fourchette_de_deux_dates)
dans un module standard:
Function Age(DateNaissance As Date) As Integer
If Not IsDate(DateNaissance) Then
DateNaissance = Date
End If
If DateNaissance > Date Then
DateNaissance = Date
End If
Age = DateDiff("yyyy", DateNaissance, Date)
If DateSerial(Year(Date), Month(DateNaissance), Day(DateNaissance)) >
Date Then
Age = Age - 1
End If
End Function

3- dans un formulaire, calculer le nombre de personnes:
x = DCount("*", "requête1", "[sonage] < 70")
y = DCount("*", "requête1", "[sonage] > 90")
z = DCount("*", "requête1", "[sonage]>69 and [sonage] < 91")

etc........
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Régis Allevy" a écrit dans le message de news:

Bonjour à tous,

Soit une table "Personnes" contenant, entre autres, un champs "Age".

Je voudrais faire une requête sur ce champs, pour avoir comme résultat le
compte des personnes de moins de 70 ans, des plus de 90 ans et de celles
ayant entre 70 et 90 ans.
Est-ce possible de faire ça avec une seule requête?

Merci de m'avoir lu,
Régis



Avatar
Régis Allevy
Merci Raymond,

Je me doutais bien que c'était une bêtise d'avoir un champ "Age".
J'ai bien compris (je crois), tout ce que tu m'as dit.
Néanmoins, je voudrais faire un graphique représentant ces trois zones
d'ages, et le top serait que chaque zones soient scindées en deux selon le
sexe. Hors, il me semble que pour afficher un graphique, je sois obligé de
passer par une table ou une requête!

Si l'un de vous avait une solution à ce problème, cela m'enlèverait une
belle épine du pied.

En vous remerciant de m'avoir lu,
Régis

"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

il ne faut pas mémoriser l'age dans la table, mais simplement la date de
naissance pour pouvoir recalculer l'age à chage fois.
l'age sera calculée par une fonction public placée dans un module
standard.
le comptage sera fait par la fonction DCount.
1- créer une requête pour calculer l'age:
SELECT table1.Madate, age([madate]) AS SonAge FROM table1;
2- placer la fonction age (trouvée sur
http://officesystem.access.free.fr/vba/calculs.htm#age_en_annees_dans_une_fourchette_de_deux_dates)
dans un module standard:
Function Age(DateNaissance As Date) As Integer
If Not IsDate(DateNaissance) Then
DateNaissance = Date
End If
If DateNaissance > Date Then
DateNaissance = Date
End If
Age = DateDiff("yyyy", DateNaissance, Date)
If DateSerial(Year(Date), Month(DateNaissance), Day(DateNaissance)) >
Date Then
Age = Age - 1
End If
End Function

3- dans un formulaire, calculer le nombre de personnes:
x = DCount("*", "requête1", "[sonage] < 70")
y = DCount("*", "requête1", "[sonage] > 90")
z = DCount("*", "requête1", "[sonage]>69 and [sonage] < 91")

etc........
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Régis Allevy" a écrit dans le message de news:

Bonjour à tous,

Soit une table "Personnes" contenant, entre autres, un champs "Age".

Je voudrais faire une requête sur ce champs, pour avoir comme résultat le
compte des personnes de moins de 70 ans, des plus de 90 ans et de celles
ayant entre 70 et 90 ans.
Est-ce possible de faire ça avec une seule requête?

Merci de m'avoir lu,
Régis







Avatar
Raymond [mvp]
Tu trouveras un exemple de graphique sur la page :
http://officesystem.access.free.fr/mschart.htm
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Régis Allevy" a écrit dans le message de news:

Merci Raymond,

Je me doutais bien que c'était une bêtise d'avoir un champ "Age".
J'ai bien compris (je crois), tout ce que tu m'as dit.
Néanmoins, je voudrais faire un graphique représentant ces trois zones
d'ages, et le top serait que chaque zones soient scindées en deux selon le
sexe. Hors, il me semble que pour afficher un graphique, je sois obligé de
passer par une table ou une requête!

Si l'un de vous avait une solution à ce problème, cela m'enlèverait une
belle épine du pied.

En vous remerciant de m'avoir lu,
Régis