Filtrage sur mois() dans ACCESS
Résolu/Fermé
JV-Vierzon
-
30 mars 2011 à 18:49
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 - 8 avril 2011 à 10:26
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 - 8 avril 2011 à 10:26
A voir également:
- Filtrage sur mois() dans ACCESS
- Acer quick access - Forum Logiciels
- Formule excel date + 6 mois ✓ - Forum Excel
- Access appdata - Guide
- Trier par mois excel - Guide
- Excel mois en lettre ✓ - Forum Excel
4 réponses
Jean_Jacques
Messages postés
1040
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
1 août 2014
112
30 mars 2011 à 20:21
30 mars 2011 à 20:21
Bonsoir JV-Vierzon,
En adaptant cette requête, vous travaillerez uniquement sur le champ date.
Et, donc, si vous saisissez :12 en tant que tantième et : 2010 en tant que millésime, vous listerez diredtement les enregistrement de décembre 2010.
SELECT TRANSACTIONS.DateSaisie, TRANSACTIONS.RéfValeur, DatePart("m",[Datesaisie]) AS Mois, DatePart("yyyy",[Datesaisie]) AS Millésime
FROM TRANSACTIONS
WHERE (((DatePart("m",[Datesaisie]))=[ Tantième du mois ? ]) AND ((DatePart("yyyy",[Datesaisie]))=[ Millésime ? ]))
ORDER BY DatePart("m",[Datesaisie]);
Cordialement
En adaptant cette requête, vous travaillerez uniquement sur le champ date.
Et, donc, si vous saisissez :12 en tant que tantième et : 2010 en tant que millésime, vous listerez diredtement les enregistrement de décembre 2010.
SELECT TRANSACTIONS.DateSaisie, TRANSACTIONS.RéfValeur, DatePart("m",[Datesaisie]) AS Mois, DatePart("yyyy",[Datesaisie]) AS Millésime
FROM TRANSACTIONS
WHERE (((DatePart("m",[Datesaisie]))=[ Tantième du mois ? ]) AND ((DatePart("yyyy",[Datesaisie]))=[ Millésime ? ]))
ORDER BY DatePart("m",[Datesaisie]);
Cordialement
Jean_Jacques
Messages postés
1040
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
1 août 2014
112
2 avril 2011 à 16:15
2 avril 2011 à 16:15
Bonjour JV-Vierzon,
Faute de mieux, voici une solution approchante.
Car il apparait que l'argument <= est strictement respecté, alors que, étrangement, < utilisé seul ne l'est pas......
Je vous laisse apprécier, ou pas...
SELECT TRANSACTIONS.DateSaisie, TRANSACTIONS.RéfValeur, DatePart("m",[Datesaisie]) AS Mois, DatePart("yyyy",[Datesaisie]) AS Millésime
FROM TRANSACTIONS
WHERE (((DatePart("m",[Datesaisie]))<=[ Tantième du mois ? ]) AND ((DatePart("yyyy",[Datesaisie]))=[ Millésime ? ]));
Cordialement
Faute de mieux, voici une solution approchante.
Car il apparait que l'argument <= est strictement respecté, alors que, étrangement, < utilisé seul ne l'est pas......
Je vous laisse apprécier, ou pas...
SELECT TRANSACTIONS.DateSaisie, TRANSACTIONS.RéfValeur, DatePart("m",[Datesaisie]) AS Mois, DatePart("yyyy",[Datesaisie]) AS Millésime
FROM TRANSACTIONS
WHERE (((DatePart("m",[Datesaisie]))<=[ Tantième du mois ? ]) AND ((DatePart("yyyy",[Datesaisie]))=[ Millésime ? ]));
Cordialement
Bonjour JV-Vierzon,
Les puristes n'apprécierons que modérémment, mais ... ça fonctionne ...
- En insérant - 1 après -> [ Tantième du mois ? ]-1
La requête liste les enregistrements antérieurs à la valeur du tantième de mois saisi ...
SELECT TRANSACTIONS.DateSaisie, TRANSACTIONS.RéfValeur, DatePart("m",[Datesaisie]) AS Mois, DatePart("yyyy",[Datesaisie]) AS Millésime
FROM TRANSACTIONS
WHERE (((DatePart("m",[Datesaisie]))<=[ Tantième du mois ? ]-1) AND ((DatePart("yyyy",[Datesaisie]))=[ Millésime ? ]))
ORDER BY DatePart("m",[Datesaisie]);
Cordialement
Les puristes n'apprécierons que modérémment, mais ... ça fonctionne ...
- En insérant - 1 après -> [ Tantième du mois ? ]-1
La requête liste les enregistrements antérieurs à la valeur du tantième de mois saisi ...
SELECT TRANSACTIONS.DateSaisie, TRANSACTIONS.RéfValeur, DatePart("m",[Datesaisie]) AS Mois, DatePart("yyyy",[Datesaisie]) AS Millésime
FROM TRANSACTIONS
WHERE (((DatePart("m",[Datesaisie]))<=[ Tantième du mois ? ]-1) AND ((DatePart("yyyy",[Datesaisie]))=[ Millésime ? ]))
ORDER BY DatePart("m",[Datesaisie]);
Cordialement
Bonjour Jean-Jacques.
Merci pour votre aide qui m'a aidé dans cette recherche. La solution suivante fonctionne:
SELECT [26_01_ProduitsColis].N°Annuaire, [26_01_ProduitsColis].Date, DatePart("m",[Date]) AS Mois, DatePart("yyyy",[Date]) AS Année
FROM 26_01_ProduitsColis
WHERE (((DatePart("m",[Date]))<Val([N° du mois :])) AND ((DatePart("yyyy",[Date]))=[Année :]))
ORDER BY DatePart("m",[Date]);
L'utilisation de la fonction VAL() force la mise ne numérique de mes données dans [N° du mois :].
Je pense que c'est équivalent au -1 proposé (solution que j'ai déjà utilisé dans Excel lors de copier-coller pour forcer les valeurs à être en numérique: Collage spécial/Multiplier dans une colonne remplie de 1).
Ce qui est bizarre, c'est que la valeur, toujours un chiffre, entrée dans la variable [N° du mois :] soit considérée, par défaut, comme une chaîne de caractère par ACCESS et qu'il puisse la comparer à une valeur normalement numérique: Mois().
Mon retour dans les bases de données que j'avais quittées il y a quelques années (DBase sur Amstrad) est bien laborieux.
Par contre, il n'y avait pas à cette époque d'Internet et de forums comme le votre qui sont d'une grande aide.
Merci à ceux qui donne de leur temps pour nous aider.
Amicalement.
JV-Vierzon
Merci pour votre aide qui m'a aidé dans cette recherche. La solution suivante fonctionne:
SELECT [26_01_ProduitsColis].N°Annuaire, [26_01_ProduitsColis].Date, DatePart("m",[Date]) AS Mois, DatePart("yyyy",[Date]) AS Année
FROM 26_01_ProduitsColis
WHERE (((DatePart("m",[Date]))<Val([N° du mois :])) AND ((DatePart("yyyy",[Date]))=[Année :]))
ORDER BY DatePart("m",[Date]);
L'utilisation de la fonction VAL() force la mise ne numérique de mes données dans [N° du mois :].
Je pense que c'est équivalent au -1 proposé (solution que j'ai déjà utilisé dans Excel lors de copier-coller pour forcer les valeurs à être en numérique: Collage spécial/Multiplier dans une colonne remplie de 1).
Ce qui est bizarre, c'est que la valeur, toujours un chiffre, entrée dans la variable [N° du mois :] soit considérée, par défaut, comme une chaîne de caractère par ACCESS et qu'il puisse la comparer à une valeur normalement numérique: Mois().
Mon retour dans les bases de données que j'avais quittées il y a quelques années (DBase sur Amstrad) est bien laborieux.
Par contre, il n'y avait pas à cette époque d'Internet et de forums comme le votre qui sont d'une grande aide.
Merci à ceux qui donne de leur temps pour nous aider.
Amicalement.
JV-Vierzon
Jean_Jacques
Messages postés
1040
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
1 août 2014
112
8 avril 2011 à 10:26
8 avril 2011 à 10:26
Bonjour JV-Vierzon,
Val() : Je m'en veux, c'est tellement évident !
A propos de AMSTRAD, la pédégère de la grande époque, Marion VANNIER, vit à présent de ses rentes(!). Elle évoque dans des reportages les débuts héroïques de la marque ainsi que la fin plutôt discrète de cette entreprise.
J'ai aussi connu DBASE IV. A l'époque, je pensais qu'il n'y aurait jamais mieux .... Tout comme pour AMSTRAD d'ailleurs .....
Conclusion : Nous vivons une époque intéressante
Bonne journée
Val() : Je m'en veux, c'est tellement évident !
A propos de AMSTRAD, la pédégère de la grande époque, Marion VANNIER, vit à présent de ses rentes(!). Elle évoque dans des reportages les débuts héroïques de la marque ainsi que la fin plutôt discrète de cette entreprise.
J'ai aussi connu DBASE IV. A l'époque, je pensais qu'il n'y aurait jamais mieux .... Tout comme pour AMSTRAD d'ailleurs .....
Conclusion : Nous vivons une époque intéressante
Bonne journée
2 avril 2011 à 08:50
Je vous remercie pour la rapidité de votre réponse.
Mais j'ai toujours le même problème: cette requête fonctionne bien pour rechercher les enregistrements d'un mois donné:
SELECT [26_01_ProduitsColis].N°Annuaire, [26_01_ProduitsColis].Date, DatePart("m",[Date]) AS Mois
FROM 26_01_ProduitsColis
WHERE (((DatePart("m",[Date]))=[ Tantième du mois ? ]) AND ((DatePart("yyyy",[Date]))=[ Millésime ? ]))
ORDER BY DatePart("m",[Date]);
Mais pour filtrer les enregistrements des mois antérieurs:
SELECT [26_01_ProduitsColis].N°Annuaire, [26_01_ProduitsColis].Date, DatePart("m",[Date]) AS Mois
FROM 26_01_ProduitsColis
WHERE (((DatePart("m",[Date]))<[ Tantième du mois ? ]) AND ((DatePart("yyyy",[Date]))=[ Millésime ? ]))
ORDER BY DatePart("m",[Date]);
Pour un millésime de valeur 2 (février), les enregistrements des mois 2 à 9 sont effectivement bloqués mais pas pour les mois 10, 11 et 12.
Hors ces nombres, valeur du mois, sont numériques (?) et 10 à 12 devraient ne pas être considéré comme <2.
Le filtre semble alphabétique en considérant ces valeurs comme chaine de caractère : "2" est effectvement plus grand que "10", "11" et "12" qui commencent par 1.
Merci d'avance pour vos lumières.
Jean
2 avril 2011 à 10:20
Voici un exemple de requete parametre
ou tu indique le choix du mois et de l'année
SELECT TRANSACTIONS.Datesaisie, DatePart("m",[Datesaisie]) AS Mois, DatePart("yyyy",[Datesaisie]) AS Années
FROM TRANSACTIONS
WHERE (((DatePart("m",[Datesaisie]))=[Quel Mois]) AND ((DatePart("yyyy",[Datesaisie]))=[Quelle Année]))
ORDER BY DatePart("m",[Datesaisie]);