Année glissante

Le
Douda
Bonjour,

Je cherche à faire un filtre année glissante sur un champ pour que
chaque fois que la requête s'exécute, elle prenne en compte les douze
derniers mois.

J'ai essayé "Entre Mois(MonChamp)-12 Et Mois(Maintenant())" mais ça a
pas l'air de marcher. Aucun message d'erreur, juste aucun
enregistrement alors que j'en ai.

Merci de votre aide.


Nadia
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Douda
Le #23971591
On 16 nov, 13:48, Douda
Bonjour,

Je cherche à faire un filtre année glissante sur un champ pour que
chaque fois que la requête s'exécute, elle prenne en compte les douze
derniers mois.

J'ai essayé "Entre Mois(MonChamp)-12 Et Mois(Maintenant())" mais ça a
pas l'air de marcher. Aucun message d'erreur, juste aucun
enregistrement alors que j'en ai.

Merci de votre aide.

Nadia



Entre Mois(Maintenant())-12 Et Mois(Maintenant())
Douda
Le #23971661
On 16 nov, 13:55, Douda
On 16 nov, 13:48, Douda


Je viens de comprendre mon erreur, pourquoi Mois()-12 marche pas.

J'ai essayé qqch du genre entre (année(maintenant)-1) et
mois(maintenant) Et année(maintenant) et mois(maintenant) !

> Bonjour,>

> Je cherche à faire un filtre année glissante sur un champ pour que
> chaque fois que la requête s'exécute, elle prenne en compte les dou ze
> derniers mois.

> J'ai essayé "Entre Mois(MonChamp)-12 Et Mois(Maintenant())" mais ça a
> pas l'air de marcher. Aucun message d'erreur, juste aucun
> enregistrement alors que j'en ai.

> Merci de votre aide.

> Nadia

Entre Mois(Maintenant())-12 Et Mois(Maintenant())
Gloops
Le #23971851
Douda a écrit, le 16/11/2011 13:48 :
Bonjour,

Je cherche à faire un filtre année glissante sur un champ pour que
chaque fois que la requête s'exécute, elle prenne en compte les dou ze
derniers mois.

J'ai essayé "Entre Mois(MonChamp)-12 Et Mois(Maintenant())" mais ça a
pas l'air de marcher. Aucun message d'erreur, juste aucun
enregistrement alors que j'en ai.

Merci de votre aide.


Nadia




Bonjour Nadia,

Comme ça à chaud, je dirais quelque chose comme

DateFiltree >= (Now() - 365) AND DateFiltree <= Now()

Je n'exclue pas qu'il faille un peu formater les dates aux bornes, donc

"DateFiltree >= DateSerial(" & Year(Now() - 365) & ", " & Month(Now() -
365) & ", " & Day(Now() - 365) & ") AND DateFiltree <= DateSerial(" &
Year(Now()) & "," & Month(Now()) & ", " & Day(Now()) & ")"

Je laisse gérer la question de la coupure de ligne liée à la public ation
dans le newsgroup ...

Il est possible aussi que la gymnastique que je viens de proposer avec
DateSerial soit nécessaire sur la date calculée d'il y a un an, mais pas
sur celle d'aujourd'hui.

Comme tu as peut-être compris, j'ai une certaine expérience sur Acces s,
mais je n'ai pas le produit à la maison, donc je réponds de mémoire , je
te laisse tester.
J'ai essayé de faire attention aux fermetures de parenthèses et de
guillemets, dans le bon ordre. C'est au test qu'il se confirme si je me
suis planté ou pas.

Une chose à préciser encore peut-être, ce que j'ai proposé comme requête
prend en charge les 365 derniers jours écoulés, donc un an. Si on veu t
prendre en compte des mois calendaires entiers, alors il faudra mettre
la bonne valeur dans l'argument Day. A priori, ce sera 1, et si on veut
le dernier jour du mois précédent on retire 1.

Donc je fournis des éléments de réflexion, il reste à s'en servir ;)
Gloops
Le #23971841
Gloops a écrit, le 16/11/2011 15:16 :
A priori, ce sera 1, et si on veut le dernier jour du mois précéden t on
retire 1.



Dernier jour du mois en cours : il y a eu un certain nombre de fils
là-dessus ici il y a quelques années. J'ai oublié la proposition la plus
élégante, alors je retiens juste le principe : évaluer la date du
premier du mois suivant, et en retirer 1.

DtTemp = Now() + 35 'une date quelconque au cours du mois suivant
DernierJourMoisEnCours = DateSerial(Year(DtTemp), Month(DtTemp), 1) - 1

ce qui peut aussi s'exprimer :
DernierJoursMoisEnCours = DateSerial(Year(DtTemp), Month(DtTemp), 0)

En cherchant dans les FAQ on va bien trouver quelque chose de mieux. :)
Albéric
Le #23975541
Bonjour,

C'est normal : 'mois' retourne un nombre entre 1 et 12.

Quand tu dis les douze derniers mois, pour moi, le 17/11/11, cela veut dire
entre le 1/10/10 et le 31/10/11 inclus.

WHERE ((([Table].[Champ]) Between
DateSerial(Year(Date()),Month(Date())-13,1) And
DateSerial(Year(Date()),Month(Date()),-1)));

Entre SérieDate(Année(Date());Mois(Date())-13;1) Et
SérieDate(Année(Date());Mois(Date());-1)

Cdt

"Douda"
Bonjour,

Je cherche à faire un filtre année glissante sur un champ pour que
chaque fois que la requête s'exécute, elle prenne en compte les douze
derniers mois.

J'ai essayé "Entre Mois(MonChamp)-12 Et Mois(Maintenant())" mais ça a
pas l'air de marcher. Aucun message d'erreur, juste aucun
enregistrement alors que j'en ai.

Merci de votre aide.


Nadia
Publicité
Poster une réponse
Anonyme