IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Calcul age dans Access 2007 [AC-2007]


Sujet :

Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Calcul age dans Access 2007
    Hello tous le monde,

    Suis carrément perdus.
    j'essaie en vain de calculer l'age d'une personne a partir de sa date de naissance.
    Je suis complètement novice sous Access et en programmation.

    Dans ma table "Etudiants" J'ai un champs "age" sous format date/heure et un champs "date de naissance" sous format date/heure.

    J'ai cherché sur Google parce que Google est mon ami mais la c'est pas mon pote toutes les solutions que je trouves ne fonctionne pas.

    Pour la formule : Ent(DiffDate("j";[date de naissance];Maintenant())/365,25)

    je l indique dans "valeur par défaut" et ça me dit : le moteur de base de données ne reconnait pas le champs "date de naissance" dans une expression de validation ou la valeur par défaut dans la table Etudiants.

    Ou est ce que je me trompe ? Que dois je faire ?
    Merci a vous si vous avez des pistes ... En revanche n'hesitez pas a m'expliquez ça comme a un novice

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 122
    Points : 172
    Points
    172
    Par défaut
    Salutations,

    Alors, on va commencer par le début...Si tu souhaites respecter un certains formalisme dans ta base, tu dois savoir qu'on ne stocke jamais une donnée calculable dans une table. Or l'âge est bien sûr une donnée calculable.
    Il faudrait donc que tu supprimes ce champs de ta table.

    Pour obtenir l'âge de tes étudiants, tu crées une requêtes sur ta table étudiant et c'est elle qui va faire le calcul. Voici le code SQL de la requête qui renverra UNIQUEMENT l'âge tronqué à l'année entière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Int((Date()-[naissance])/365.25) AS Age
    FROM Table1;
    Il te reste à adapter le nom du champ entre crochet et le nom de la table. Tu peux bien sûr également ajouter des champs dans la sélection.

    Si tu as des questions supplémentaires, n'hésites pas.

    Cordialement,
    "Je suis capable du meilleur comme du pire, mais dans le pire, c'est moi le meilleur" Coluche.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Merci Beaucoup
    Tes explications sont presque super clair pour le novice que je suis.
    En revanche y a un truc que je ne comprends pas :
    Si je supprime le champs "age" ou va se trouver le résultat du calcul sur mon formulaire ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour
    Tu as également la Faq:
    http://access.developpez.com/faq/?page=dates#HowOld

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Merci GAYOT mais la FAQ ne m apporte pas de reponses malheureusement

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par davez Voir le message
    ne comprends pas :
    Si je supprime le champs "age" ou va se trouver le résultat du calcul sur mon formulaire ?
    Dans ton formulaire tu peux tout à fait avoir une zone indépendante dans laquelle sera effectuée le calcul par rapport à ta zone 'date de naissance'.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Merci encore une fois.
    Est ce que cela t embêterais beaucoup de me détailler la procédure.
    Je viens d'essayer et j'ai le droit a "#Erreur"

    MErci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Dans la propriété source contrôle de ta zone libre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Int(DiffDate("j";[naissance];Maintenant())/365,25)
    Remplace 'naissance' par le nom exact de ton champ

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    1 Milliard de fois Mercisssssssssssssssssssssssss

  10. #10
    Invité
    Invité(e)
    Par défaut
    C'est une solution.
    Comme l'a dit Mahexter, tu peux également passer par une requête qui devient la source de ton formulaire...Donc à toi de voir.

  11. #11
    Candidat au Club
    Femme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Novembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par davez Voir le message
    Hello tous le monde,

    Suis carrément perdus.
    j'essaie en vain de calculer l'age d'une personne a partir de sa date de naissance.
    Je suis complètement novice sous Access et en programmation.

    Dans ma table "Etudiants" J'ai un champs "age" sous format date/heure et un champs "date de naissance" sous format date/heure.

    J'ai cherché sur Google parce que Google est mon ami mais la c'est pas mon pote toutes les solutions que je trouves ne fonctionne pas.

    Pour la formule : Ent(DiffDate("j";[date de naissance];Maintenant())/365,25)

    je l indique dans "valeur par défaut" et ça me dit : le moteur de base de données ne reconnait pas le champs "date de naissance" dans une expression de validation ou la valeur par défaut dans la table Etudiants.

    Ou est ce que je me trompe ? Que dois je faire ?
    Merci a vous si vous avez des pistes ... En revanche n'hesitez pas a m'expliquez ça comme a un novice

    Bonjour Davez.

    En premier lieu, je mettrais le champ age en numérique (Format: "Integer" ou entier), au lieu du format date/heure.

    Ensuite, j'évite de mettre des espaces ou des accents dans les noms des champs. Je renommerai donc le champ [date de naissance] en [DateNaiss] (par exemple).

    Pour finir, un petit code événementielle en VBA sur la perte focus du champ [date de naissance] et/ou en réception focus du champ [Age]...
    (le ' indique un commentaire, par soucis de clarification et de compréhension, et ce qui suit sur la ligne est purement informel).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub DNaiss_LostFocus()  'Perte de focus du champ DNaiss
        If [DNaiss].Value <> "" Then
            [Age].Value = Int((Date - [DNaiss]) / 365.25)
        End If
    End Sub
     
    Private Sub Age_GotFocus()  'Réception de focus du champ Age
        If [DNaiss].Value <> "" Then
            [Age].Value = Int((Date - [DNaiss]) / 365.25)
        End If
    End Sub
    Le champ [Age] prend ainsi la valeur (entière numérique), convertie en années ("/365.25") de la différence entre la date d'aujourd'hui Date(), et la date de naissance [DNaiss].

    Voilà, j'espère que mon explication te parait claire...

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bug Type Double dans Access 2007
    Par kurkaine dans le forum C++Builder
    Réponses: 1
    Dernier message: 11/07/2007, 17h35
  2. Comportement des menus dans Access 2007
    Par soso78 dans le forum IHM
    Réponses: 6
    Dernier message: 17/06/2007, 22h43
  3. Formulaires réduits dans access 2007
    Par alyphe dans le forum Runtime
    Réponses: 2
    Dernier message: 13/06/2007, 08h35
  4. Obtenir la liste des tables dans Access 2007
    Par je_developpe dans le forum Access
    Réponses: 2
    Dernier message: 13/03/2007, 05h16
  5. stocker du texte d'une richtext box dans access 2007
    Par Ismaël(l) dans le forum IHM
    Réponses: 4
    Dernier message: 30/01/2007, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo