|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Mélanie Inscription : janvier 2007 Messages : 80 ![]() |
Bonjour,
J'ai un (gros !) souci dans ma base... Pour poser le problème, j'ai créé une table dans laquelle j'ai (entre autres) 2 champs, "moisqualif" et "annéequalif", qui se réfèrent à des tables de référence "mois" et "année" (donc j'ai des liste déroulantes dans mon formulaire, qui me permettent de sélectionner le mois et l'année que je souhaite enregistrer). Mes tables de référence ont la structure suivante : 1 clé primaire (n° auto) + un champ mois (janvier, février, mars...) ou un champ année (2008, 2009, 2010, 2011...) A présent, je souhaite créer une requête qui me permette d'obtenir toutes les qualifs qui ont expirées, c'est à dire toutes les qualifs pour lesquelles "annéequalif" <= année actuelle et "moisqualif" <= mois actuel. Dans ma requête, j'ai donc mis comme critères sur mon champ année et sur mon champ mois. Le problème est que, si j'ai une qualif qui a expiré en Décembre 2010, je ne la voit pas, puisque nous ne sommes pas encore en décembre... J'ai donc cherché un moyen de recréer la date d'expiration directement dans la requête, par concaténation du mois et de l'année de qualif, mais quand je fais cela, access ne reconnait pas le champ créé ainsi comme étant une date, et donc je ne peux pas lui appliquer le critère qui me permettrait de voir uniquement les qualifs qui ont expiré à ce jour... Je souhaiterais donc avoir l'aide de quelqu'un qui saurait comment faire pour définir comme date un champ créé dans une requête sur la base de 2 autres champs ? J'espère avoir été assez claire, vu la complexité du problème, et surtout, j'espère que quelqu'un aura la gentillesse de m'aider ! D'avance merci. MelaAllIn |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour MelaAllIn,
Il faut concaténer :
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Mélanie Inscription : janvier 2007 Messages : 80 ![]() |
Merci Richard_35 pour ta réponse, je l'ai appliquée à mon cas.
J'arrive bien à reconstruire les dates sous le format que tu proposes Par contre, comment dois-je m'y prendre, ensuite, pour faire la comparaison entre les 2 valeurs ? J'ai bien essayé de mettre comme critère "<= Aujourdhui()" (c'est le nom que j'ai donné à la concaténation pour la date du jour) sur ma date d'expiration de qualif, mais ça ne fonctionne pas (il me met: Fonction "Aujourdhui" non définie dans l'expression)... |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Citation:
Pour éviter les confusions, appelles ton champ calculé DateAujourd'hui (par exemple).
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
Bonjour,
et pourquoi ne pas reconstruire une date à partir des champs mois et année avec la fonction DateSerial (SérieDate en français dans le QBE) Code :
LaDate : SérieDate([champAnnée] ; [ChampMois] ; 1) Plus facile après pour faire les comparaisons je pense, non ?
__________________
L'informatique fait son grand retour au lycée... |
|
10
|
|
|
#6 |
|
Membre à l'essai
![]() Mélanie Inscription : janvier 2007 Messages : 80 ![]() |
Bonjour,
Effectivement, la solution de f-leb est plus simple, au niveau de la comparaison par rapport à la date du jour (il suffit de mettre comme critère sur LaDate : J'ai donc plutôt retenu cette solution. Par contre, Richard_35, par curiosité, j'ai essayé de finaliser ta solution, et je n'arrive pas à faire la comparaison : j'ai renommé mon champ calculé DateAujourdhui au lieu de Aujourdhui, afin d'éviter toute confusion avec les fonctions Access, mais il n'est pas reconnu comme champ calculé dans mon critère... Est-ce que je dois mettre DateAujourdhui, ou DateAujourdhui() ? Sinon, merci à tous les 2 pour votre aide !!! |
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour MelaAllIn et Fabien,
Effectivement, la solution de Fabien est plus propre, car elle reste dans le domaine des dates. Citation:
Annee_Mois_A_Tester = Année(Date_a_tester) & Format(Mois(Date_a_tester);"0#") ==> "201107" ; Date_Aujourdhui = Année(Maintenant()) & Mois(Maintenant()) ==> "201108". En chaîne de caractères, "201107" sera toujours inférieur à "201108" et, en nombre, 201107 (deux cent un mille cent sept) sera toujours inférieur à (deux cent un mille cent huit) Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com