Page 1 sur 1

[Résolu] Requête pour âge à différentes dates

MessagePublié: 04 Avr 2009 00:22
par René-Pierre
Bonjour,

J'ai construit une base de données pour les membres de notre club, qui contient une table avec les données de chaque membre. J'ai fait une requête qui permet de calculer l'âge de chaque membre pour un jour précis - j'avais trouvé comment faire sur ce forum. Voici ma requête:

Code : Tout sélectionner   AgrandirRéduire
SELECT "nom", "prenom", "naissance",
CASE
WHEN Month('2009-04-01') < month("naissance") or ( Month('2009-04-01') = Month("naissance") and day('2009-04-01')<day("naissance") )   THEN
      CAST((year('2009-04-01') - year("naissance") -1) AS VARCHAR) || ' ans'
ELSE
      CAST((year('2009-04-01') - year("naissance") ) AS VARCHAR) || ' ans'
END as "age"
from "liste-membres"


Cette requête fonctionne bien, mais je dois changer la date de la formule à chaque nouvelle requête. J'ai besoin de calculer l'âge à chaque session, pour chaque examen ( 2 ou 3 examens aux 10 semaines environ), car les exigences de passage changent selon l'âge. Existe-t-il un moyen que je n'aurais pas à retaper la date 5 fois ?

Le résultat de la requête est imprimé sur des étiquettes qu'on colle sur les feuilles d'examen.

Merci de m'aider.

Re: Requête pour âge à différentes dates

MessagePublié: 04 Avr 2009 08:31
par jeanmimi
Bonjour et bienvenue dans ce forum,
Je ne sais pas si tu as recherché dans les exemples présents dans le forum, mais tu en as qui te montrent comment, comme dans l'exemple joint.
Tu peux aussi joindre ton fichier pour faciliter l'aide à t'apporter.

Re: Requête pour âge à différentes dates

MessagePublié: 04 Avr 2009 18:19
par Dominique Pautrel
Bonjour,

D'après ce que j'en vois dans cette section :
http://wiki.services.openoffice.org/wik ... te.2FHeure

Il y aurait soit CURRENT_DATE, soit CURRENT_TIMESTAMP, ou éventuellement Now(), qui pourrait remplacer la chaine '2009-04-01', dans l'exemple, pour se référer toujours à "Aujourd'hui".

jeanmimi a écrit:Tu peux aussi joindre ton fichier pour faciliter l'aide à t'apporter.
Si ces idées ne conviennent pas, bien sur c'est la bonne démarche...

Re: Requête pour âge à différentes dates

MessagePublié: 06 Avr 2009 15:18
par René-Pierre
Bonjour,

Merci d'avoir répondu si rapidement.

Le fichier joint par Jeanmimi ressemble beaucoup à la base que j'ai utilisée à l'automne pour construire ma propre base. La requête age (la première) est celle que j'utilisais au début pour calculer l'âge des membres. Puis je l'ai modifée pour me faciliter la vie.

Ce que je dois faire, c'est obtenir l'âge des membres à des dates fixes. Par exemple, cette semaine, c'est la période d'inscription du club. Après, je dois fournir à la commission régionale une liste des membres actifs avec leur âge au 1 janvier 2009. Je dois faire la même liste pour l'association nationale avec l'âge des membres au 1 septembre 2008. Lors de la session d'examens, je dois fournir l'âge des membres le jour de l'examen (qui n'est pas toujours la date à laquelle je prépare les copies des examens). Ainsi, dans la formule de requête, je change CURRENT_DATE pour insérer plutôt la date à laquelle j'ai besoin de l'âge.

Ce que j'aimerais obtenir, c'est une façon de demander à la requête "donne-moi l'âge le 1 janvier 2009" ou "donne-moi l'âge le 1 septembre 2008" sans avoir à remplacer le CURRENT_DATE de la formule 5 fois avec la bonne date. Les premières fois, on a essayé en changeant la date de l'ordinateur avant de de lancer la requête, mais Windows ne semble pas apprécié ça, on a eu des problèmes.

Est-ce possible ?

Merci encore

Re: Requête pour âge à différentes dates

MessagePublié: 06 Avr 2009 17:23
par jeanmimi
Pour tester, ce serait sans doute plus facile avec ton fichier.
Je pense à une boite de dialogue sur le critère CURRENT_DATE par exemple.

Re: Requête pour âge à différentes dates

MessagePublié: 07 Avr 2009 04:03
par René-Pierre
Bonsoir,

voici mon fichier simplifié, pour tester.

Merci pour votre aide

Re: Requête pour âge à différentes dates

MessagePublié: 07 Avr 2009 06:46
par Oukcha
Bonjour et bienvenue,

Pour joindre un exemple de fichier avec notre service Ci-Joint (lien en bas de la page lors de la rédaction du message), veuillez consulter : viewtopic.php?t=10246

Cordialement, Oukcha

Re: Requête pour âge à différentes dates

MessagePublié: 07 Avr 2009 15:47
par Pierre-Yves Samyn
Bonjour

René-Pierre a écrit:Ce que j'aimerais obtenir, c'est une façon de demander à la requête "donne-moi l'âge le 1 janvier 2009" ou "donne-moi l'âge le 1 septembre 2008" sans avoir à remplacer le CURRENT_DATE de la formule 5 fois avec la bonne date.


Le plus simple me semble être de créer une table spécifique (un champ clé primaire en auto-valeur et un champ date). Il suffira de saisir la date dans cette table.
Ensuite on ajoute cette table à la requête et on a deux possibilités :
- soit on ajoute la liaison sur entre les champs date
- soit ne relie pas les tables mais on utilise comme critère de sélection :

Code : Tout sélectionner   AgrandirRéduire
IN ( SELECT [param] FROM [Param] )


Nota : dans cet exemple la table paramètre et le champ date "paramètre" se nomment Param

Re: Requête pour âge à différentes dates

MessagePublié: 07 Avr 2009 18:45
par René-Pierre
Bonjour,

Une panne de courant est survenue alors que je transmettais mon fichier hier soir, je vois que rien n'a passé. Mon fichier a été corrompu et je dois le refaire, alors voici une ébauche de ma base. Une fois le fichier refait - j'en a besoin pour les inscriptions ce soir - j'essairai les dernières suggestions.

Merci

Re: Requête pour âge à différentes dates

MessagePublié: 08 Avr 2009 10:03
par jeanmimi
J'ai cherché à appliquer les suggestions de Pierre-Yves, mais j'ai mal dû m'y prendre car je n'arrive pas à mieux que ce que j'avais testé auparavant.
Pourtant, la solution ne doit pas être très loin.

Re: Requête pour âge à différentes dates

MessagePublié: 08 Avr 2009 10:34
par Pierre-Yves Samyn
Un exemple donc :

Code : Tout sélectionner   AgrandirRéduire
SELECT "nom", "prenom", "tel", "ID-membre", "telcode",  "naissance", 'aura' as " " , "date" as "le",

CASE
WHEN Month("date") < month("naissance") or ( Month("date") = Month("naissance") and day("date")<day("naissance") )   THEN
      CAST((year("date") - year("naissance") -1) AS VARCHAR) || ' ans'
ELSE
      CAST((year("date") - year("naissance") ) AS VARCHAR) || ' ans'
END as "age"

from "membres", "date"


Rappel : avec cette solution on n'utilise plus de paramètre. Ce dernier est saisi dans la table...

[Résolu] Re: Requête pour âge à différentes dates

MessagePublié: 09 Avr 2009 04:11
par René-Pierre
Bonsoir,

j'ai essayé la solution de Pierre-Yves et tout fonctionne bien. Ce soir, après les inscriptions, mon fichier était à jour, alors j'ai essayé avec la liste des 250 membres, mes 2 rapports sont prèts à être signés et postés. C'est tellement plus rapide !

Encore merci !