[ACCESS] Statisque simple sur l'âge
Hiwiiiii
-
Christounet Messages postés 1272 Date d'inscription Statut Membre Dernière intervention -
Christounet Messages postés 1272 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je cherche à faire apparaître 3 simples statistique sur mon formulaire Access,
j'ai donc une table PERSONNE, avec dedans plusieurs enregistrement, j'ai un champ où est stocké la date de naissance de ces personnes (format jj/mm/aa)
dans mon formulaire, j'affiche le nombre total de personne dans la table (ça c'est ok)
je voudrais aussi ajouter ¤ le nombre de personne qui ont moins de 26ans
¤ le nombre de personne ayant entre 27 et 49ans
¤ le nombre de personne ayant plus de 50ans
(à afficher dans des zones texte classique)
Il faudrait donc soustraire la date de naissance avec la date d'aujourd'hui pour obtenir l'âge et ensuite l'attribuer à telle ou telle catégorie et la je nage complètement !
Merci pour vos réponses
je cherche à faire apparaître 3 simples statistique sur mon formulaire Access,
j'ai donc une table PERSONNE, avec dedans plusieurs enregistrement, j'ai un champ où est stocké la date de naissance de ces personnes (format jj/mm/aa)
dans mon formulaire, j'affiche le nombre total de personne dans la table (ça c'est ok)
je voudrais aussi ajouter ¤ le nombre de personne qui ont moins de 26ans
¤ le nombre de personne ayant entre 27 et 49ans
¤ le nombre de personne ayant plus de 50ans
(à afficher dans des zones texte classique)
Il faudrait donc soustraire la date de naissance avec la date d'aujourd'hui pour obtenir l'âge et ensuite l'attribuer à telle ou telle catégorie et la je nage complètement !
Merci pour vos réponses
Configuration: Windows XP Firefox 2.0.0.14
21 réponses
- 1
- 2
Suivant
-
Bonjour,
Pour calculer l'age tu peux utiliser le code suivantENT(DIFFDATE("j"; [datenaissance]; NOW( )) / 365.25)
Tu trouveras d'autres informations sur le site suivant
A plus -
-
Désolé je n'avais pas vu votre réponse !!
ça à l'air d'être ce qu'il faut je vais essayer de la faire marcher.
Merci je vous tiens au courant. -
On est obliger de l'utiliser dans une requête peut-être ??? Moi ça m'arrangerais de pouvoir le mettre directement dans le source contrôle d'une zone texte.
Je regardes, je regardes -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bon le premier truc ça marche, cad que j'arrive à avoir l'age en fonction de la date de naissance dans une zone texte :
=DiffDate("aaaa";[TDE_naiss];Maintenant())
maintenant il faut que j'arrive à les comptabiliser dans telle ou telle catégorie, mais pour faire ça je suis obligé de créer un champ dédié, non ?
A+ -
-
Bonjour,
Tu peux utiliser l'ordre SQL suivantselect count(*) from nomdetatable where DiffDate("aaaa";[TDE_naiss];Maintenant()) < 26 union select count(*) from nomdetatable where DiffDate("aaaa";[TDE_naiss];Maintenant()) between 26 and 49 union select count(*) from nomdetatable where DiffDate("aaaa";[TDE_naiss];Maintenant()) > 49
Tu auras comme résultat 3 lignes contenant le nombre de personnes <26 , >25 et < 50 , > 49
Tu peux aussi rajouter une colonne dans ta table qui contient la valeur suivante 1 si age < 26, 2 si age entre 26 et 49, 3 si age > 49 et le code sera alorsselect nouvellecolonne , count(*) from nomdetatable group by nouvellecolonne
Je pense que cela devrait faire ce que tu cherches
A plus -
Merci de votre réponse, je n'avais pas pensé au SQL, je parle que votre synthaxe est bonne mais je ne sais pas comment utiliser ce code sous ACCESS, désolé mais j'ai appris le SQL sur un terminal Unix et la je suis perdu lol
Si vous pouvez m'en dire encore un peu plus, vraiment désolé pour toutes ces questions.
A+ -
Bonjour,
Peux-tu me dire comment tu obtiens le nombre total de personnes dans ton formulaire ?
A plus -
Salut,
alors pour tout ce qui est comptage "simple", j'utilise une fonction que l'on m'a conseillé sur le forum :
=CpteDom("TDE_id";"TDE")
TDE=table demandeur emploi
je ne passe pas par le SQL, je met ça : clique droit>Donnée>Source contrôle.
A+ merci
Comme je l'ai dit ton code doit faire ce que je veux mais je ne sais pas comment l'utiliser :s -
Bonjour,
Tu dois d'abord crée 3 requêtes et les sauver chacune avec un nom différent
Requête 1
Comme colonne --> Expr1: Count(*)
Comme critère --> datediff('aaaa',[TDE.datedenaissance],maintenant()) < 26
Requête 2
Comme colonne --> Expr1: Count(*)
Comme critère --> datediff('aaaa',[TDE.datedenaissance],maintenant()) between 26 and 49
Requête 3
Comme colonne --> Expr1: Count(*)
Comme critère --> datediff('aaaa',[TDE.datedenaissance],maintenant()) > 49
Ensuite tu rajoutes trois champs dans ton formulaire
Ensuite tu rajoutes le code suivant en ouvrant les propriétés de ton formulaire et cliquant sur l'événement onload (j'ai Access en anglais)Dim db As Database ' Pointeur pour la base courante Dim rst As Recordset ' Pointeur pour le recorset devant contenir le résultat de la recherche Set db = CurrentDb ' On pointe sur la base courante Set rst = db.OpenRecordset("nomdetarequête1") 'On défini la requete rst.MoveFirst ' On pointe sur le premier élément trouvé While Not (rst.EOF) ' On passe en revue tous les enregistrement tant qu'il y en a nomchamp1.Value = rst!Expr1 ' On affiche la valeur du champ voulu de l'enregistrement courant rst.MoveNext ' On passe à l'enregistrement suivant Wend ' on va au début de la boucle rst.Close ' Fermeture du recordset Set rst = db.OpenRecordset("nomdetarequête2") 'On défini la requete rst.MoveFirst ' On pointe sur le premier élément trouvé While Not (rst.EOF) ' On passe en revue tous les enregistrement tant qu'il y en a nomchamp2.Value = rst!Expr1 ' On affiche la valeur du champ voulu de l'enregistrement courant rst.MoveNext ' On passe à l'enregistrement suivant Wend ' on va au début de la boucle rst.Close ' Fermeture du recordset Set rst = db.OpenRecordset("nomdetarequête3") 'On défini la requete rst.MoveFirst ' On pointe sur le premier élément trouvé While Not (rst.EOF) ' On passe en revue tous les enregistrement tant qu'il y en a nomchamp3.Value = rst!Expr1 ' On affiche la valeur du champ voulu de l'enregistrement courant rst.MoveNext ' On passe à l'enregistrement suivant Wend ' on va au début de la boucle rst.Close ' Fermeture du recordset
J'espère que cela pourra t'aider.
A plus -
Waa tout ça pour ça lol.
Merci pour ta raison bien développé j'y travail.
Pour l'instant :
la syntaxe n'est pas bonne et l'expression "Expr1: Count(*) " je ne sais pas où elle va lol
Comme tu es en anglais je vais te donné ce que j'ai comme "champ" :
Champ: TDE_naiss
Table: TDE
Tri:
Afficher:
Critères:
Ou:
En tout cas merci je cherche-
Bonjour,
Dans Champ, tu tapes tout simplement Count(*) et Access va rajouté Expr1 devant une fois la requête sauvée.
Dans critères tu tapes DiffDate('aaaa',[TDE.datedenaissance],Maintenant()) < 26
Concernant la fonction Datediff , c'est celle en anglais, en français c'est comme tu l'as indiqué DiffDate, désolé pour cela.
A plus
-
-
J'ai essayé de voir avec ce site :
https://www.techonthenet.com/access/functions/date/datediff.php
J'ai essayé de le présenté différemment mais ça ne marche pas.
Lorsque j'essaye de sortir du champ, j'ai un message erreur de syntaxe, si je choisis ok je reviens et si je fais aide, le volet s'ouvre mais reste vide.
de plus le curseur se replace au niveau de la première virgule, cela signifie que le problème vient de la ?
Expr1 : datediff('yyyy',[TDE_naiss],maintenant())
j'ai essayé avec des guillemets, avec aaaa mais ça ne fonctionne toujours pas. -
et pourquoi au lieu de demander la dte de naissance tu met pas direct l'age
-
Voila la syntaxe qui fonctionne chez moi !!!!
Expr1 : DiffDate("aaaa";[TDE_naiss];Maintenant())<26
Cela retourne -1 sir c'est effectivement inférieur à 26 et 0 dans les autres cas. -
Bahh pour que l'âge ne soit pas obsolète l'année prochaine, après c'est vrai qu'il est peut-être possible d'augmenter de 1 tous les ans je ne sais pas...
mais la j'ai besoin des date exact donc de la naissance. -
et ben tu bosse sur une base de donnée que tu doit actualise donc tout les ans tu actualise l'age
-
j'ai pas compris xD
sinon moi je fais un log. pour des secrétaires et après il n'y aura plus aucune modification, elle vont pas s'amuser à rajouter un an partout...
Ma solution me convient lol A+
Avec ma requête précédente et un critère "-1" ça me sors ce que je veux comme résultat.
Maintenant je vais voir pour afficher ce résultat dans un texte. -
-
- 1
- 2
Suivant