[Résolu] Calculer l'âge sous la forme Années, Mois, Jours

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
Bernard30
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 11 nov. 2021 16:47

[Résolu] Calculer l'âge sous la forme Années, Mois, Jours

Message par Bernard30 »

Bonjour
J'ai des difficultés à extraire l'Age d'un individu sous la forme ans, mois, jour
J'ai bien trouve un exemple qui propose une requête Annee Moi Jour mais elle ne fonctionne pas
J'ai isolé de cette requête la partie Annee Mois qui fonctionne normalement
Mais je n'arrive pas à déboguer la partie jour

Je travaille sous Linux Mint 21.3 et j'utilise Libre Office 7.6.4.1
Calcul_Age.odb ci joint

Merci de votre aide
Cordialement
Bernard30
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Bernard30 le 23 janv. 2024 17:10, modifié 1 fois.
libre office 7.6.4.1 sous windows 10
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 669
Inscription : 20 déc. 2017 14:45

Re: Requete de Calcul d'age

Message par rollmops »

Bonjour,

Reprenez le bon exemple : https://forum.openoffice.org//fr/forum/ ... 81#p127981
L'ODB qui est joint fonctionne.
OpenOffice 4.1.15 - Windows 10
Bernard30
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 11 nov. 2021 16:47

Re: Requete de Calcul d'age

Message par Bernard30 »

mais non cela ne fonctionne pas...
libre office 7.6.4.1 sous windows 10
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 669
Inscription : 20 déc. 2017 14:45

Re: Requete de Calcul d'age

Message par rollmops »

Capture d'écran 2024-01-20 184001.png
:)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 4.1.15 - Windows 10
Anakin
NéOOphyte
NéOOphyte
Messages : 145
Inscription : 08 nov. 2023 11:40

Re: Requete de Calcul d'age

Message par Anakin »

La solution simplifiée se trouve ici: viewtopic.php?p=374035#p374035
Libre Office 6.0.7 sous Ubuntu 18.04.6
Bernard30
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 11 nov. 2021 16:47

Re: Requete de Calcul d'age

Message par Bernard30 »

Bonjour
Pour les années et le mois la partie extraite de la requête "Année Mois Jour" fonctionne (c'est la requête que j'ai nommée "Années Mois) mais pas pour la partie jour qui bug que ce soit dans l'ancien exemple ou dans l'exemple Calcul_Age_JRE_OK.odb qui génère l'erreur en pièce jointe
J'ajoute pour être complet que le bug se produit également sous windows1
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
libre office 7.6.4.1 sous windows 10
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 669
Inscription : 20 déc. 2017 14:45

Re: Requete de Calcul d'age

Message par rollmops »

Re,
Bernard30 a écrit : 21 janv. 2024 08:03 dans l'exemple Calcul_Age_JRE_OK.odb qui génère l'erreur en pièce jointe
Le calcul de l'âge s'effectue correctement sur OpenOffice.
Maintenant, la requête que vous affichez n'est pas celle que je montre.
OpenOffice 4.1.15 - Windows 10
Bernard30
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 11 nov. 2021 16:47

Re: Requete de Calcul d'age

Message par Bernard30 »

Je dois mal m'exprimer ou mal me faire comprendre
La requête Age fonctionne
La requête Année Mois (nombre d'années et de mois à partir d'une date de naissance) fonctionne
Mais la requête complète Année Mois Jour génère l'erreur envoyée avec mon précèdent message
C'est donc la partie surlignée en jaune de la requête qui pose problème !
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
libre office 7.6.4.1 sous windows 10
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12231
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: Requete de Calcul d'age

Message par Bidouille »

Bonjour,
Bernard30 a écrit : 21 janv. 2024 09:10 Je dois mal m'exprimer ou mal me faire comprendre
D'où l'intérêt d'avoir dès le départ, un titre clair et explicite.
Ceci afin de ne pas égarer ceux qui vous répondent et aussi d'optimiser la recherche dans ce forum.

Titre modifié à votre place
Merci de le faire par vous-même la prochaine fois.
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 669
Inscription : 20 déc. 2017 14:45

Re: Calculer l'âge sous la forme Années, Mois, Jours

Message par rollmops »

Bidouille a écrit : 21 janv. 2024 09:13 D'où l'intérêt d'avoir dès le départ, un titre clair et explicite.
Effectivement ;)

La requête ne fonctionne pas parce que nous sommes en janvier et que le cas n'est pas pris en compte.
Le calcul pour les jours ramène un format de date faux avec un mois à zéro.
Il faut revoir cette partie

Code : Tout sélectionner

SELECT "Nom", "DateNaissance", 
YEAR( CURRENT_DATE ) - YEAR( "DateNaissance" ) - CASE WHEN ( MONTH( CURRENT_DATE ) < MONTH( "DateNaissance" ) OR ( MONTH( CURRENT_DATE ) = MONTH( "DateNaissance" ) AND DAY( CURRENT_DATE ) < DAY( "DateNaissance" ) ) ) THEN 1 ELSE 0 END AS "Total années", 
MONTH( CURRENT_DATE ) - MONTH( "DateNaissance" ) + CASE WHEN MONTH( CURRENT_DATE ) <= MONTH( "DateNaissance" ) AND DAY( CURRENT_DATE ) < DAY( "DateNaissance" ) THEN 11 ELSE CASE WHEN MONTH( CURRENT_DATE ) < MONTH( "DateNaissance" ) AND DAY( CURRENT_DATE ) >= DAY( "DateNaissance" ) THEN 12 ELSE CASE WHEN MONTH( CURRENT_DATE ) > MONTH( "DateNaissance" ) AND DAY( CURRENT_DATE ) < DAY( "DateNaissance" ) THEN - 1 ELSE 0 END END END AS "Total mois", 
DATEDIFF( 'DD', CASE WHEN DAY( CURRENT_DATE ) < DAY( "DateNaissance" ) THEN YEAR( CURRENT_DATE ) - CASEWHEN( MONTH( CURRENT_DATE ) = 1, 1, 0 ) || '-' || RIGHT( '0' || CASEWHEN( MONTH( CURRENT_DATE ) = 1, 12, MONTH( CURRENT_DATE ) ), 2 ) || '-' || RIGHT( '0' || DAY( "DateNaissance" ), 2 ) ELSE YEAR( CURRENT_DATE ) || '-' || RIGHT( '0' || MONTH( CURRENT_DATE ), 2 ) || '-' || RIGHT( '0' || DAY( "DateNaissance" ), 2 ) END, CURRENT_DATE ) AS "Total jours" 
FROM "Table1"
OpenOffice 4.1.15 - Windows 10
Bernard30
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 11 nov. 2021 16:47

Re: Calculer l'âge sous la forme Années, Mois, Jours

Message par Bernard30 »

Parfait
Merci beaucoup
Je pense que cette modification rendra service !
libre office 7.6.4.1 sous windows 10
Bernard30
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 11 nov. 2021 16:47

Re: Calculer l'âge sous la forme Années, Mois, Jours

Message par Bernard30 »

je n'arrive pas à indiquer que le sujet est résolu !
libre office 7.6.4.1 sous windows 10
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9258
Inscription : 28 août 2010 08:45

Re: Calculer l'âge sous la forme Années, Mois, Jours

Message par micmac »

Pour clore votre sujet :
  • Placez-vous sur le premier message de votre fil de discussion
  • En haut à droite de ce message, cliquez sur le bouton du petit crayon pour modifier.
  • Modifiez le titre du message en cochant l'icône Image et en tapant [Résolu] (respectez la tmise en forme donnée) comme illustré ci-dessous :

    Image
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12231
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: Calculer l'âge sous la forme Années, Mois, Jours

Message par Bidouille »

Bernard30 a écrit : 21 janv. 2024 17:53 je n'arrive pas à indiquer que le sujet est résolu !
Vous ne savez pas suivre une animation ?
Regardez le résultat et dites-moi à quoi sert d'avoir un titre comme ça ?
absurde.jpg
Vous imaginez si tout le mode faisait comme vous.


Corrigé à votre place
Merci de penser un peu aux autres personnes qui font ensuite des recherches dans ce forum.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.