Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3243 connectés 

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Access - Expression pour requête

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Access - Expression pour requête

n°2848914
commentfai​re
Posté le 26-03-2009 à 15:41:37  profilanswer
 

Bonjour
Dans une requête Access, je dois sélectionner les dates inférieures au permier jour du mois en cours (par ex. <01/04/2009). C'est une requête qui doit être faite tous les mois.
Quelle expression employer, autre que par ex. <#01/04/09#, afin qu'elle soit établie une fois pour toute.
Merci d'avance pour vos réponses.
 :sarcastic:

mood
Publicité
Posté le 26-03-2009 à 15:41:37  profilanswer
 

n°2849015
SuppotDeSa​Tante
Aka dje69r
Posté le 27-03-2009 à 10:57:48  profilanswer
 

Bonjour
 
<cdate("01/" & Mois(date()) & "/" & année(date()))
 
Cordialement


---------------
Soyez malin, louez entre voisins !
n°2849023
commentfai​re
Posté le 27-03-2009 à 12:15:30  profilanswer
 

SuppotDeSaTante a écrit :

Bonjour
 
<cdate("01/" & Mois(date()) & "/" & année(date()))
 
Cordialement


 
 
Bonjour
OK merci beaucoup
 :)

n°2849203
commentfai​re
Posté le 28-03-2009 à 10:24:54  profilanswer
 

SuppotDeSaTante a écrit :

Bonjour
 
<cdate("01/" & Mois(date()) & "/" & année(date()))
 
Cordialement


 
Bonjour
 
N'ayant eu qu'une formation très basique d'ACCESS, je vais encore faire appel à tes connaissances pour me traduire une expression. Je dois sélectionner les enregistrements dont les dates sont supérieures au dernier jour du mois précédent (ex. >28/02/2009) ou nulle. Comment exprimer cette requête autrement que par :
Est Null Ou >#28/02/2009#
afin qu'elle soit établie une fois pour toute.
Peux-tu m'expliquer ce que signifie dans l'expression que tu m'as donnée précédemment : "01/" et "/"
 
Merci d'avance
Cordialement

n°2849423
SuppotDeSa​Tante
Aka dje69r
Posté le 29-03-2009 à 20:31:23  profilanswer
 

Bonjour
 
Pour le dernier jour du mois, c'est un peu plus compliqué. Le plus simple etant d'oter 1 au premier jour du mois (suivant, en cours, peu importe), histoire de tomber sur le 31, le 30, le 29 ou le 28 en fonction du mois.
 
En fait ce que je fais, c'est que je construit la date. Le "&" sert a concatener des valeurs. Le CDate() transforme une variable en variable de date (obligatoire pour filtrer sur des valeurs de type date)
Donc :
- Date() = la date du jour.
- Mois(Date()) = Le mois de la date du jour. Renvoie 3
- Année(Date()) = L'annee de la date du jour. Renvoie 2009
Si tu concatene tout ca avec "&" :
- "01/" & Mois(date()) & "/" & année(date()) = 01/3/2009
Mais cela reste sous forme de chaine. Pour le transformer en date, tu mets un CDate() devant :  
- cdate("01/" & Mois(date()) & "/" & année(date())) = 01/03/2009 en date.
 
Je te laisse regarder l'aide sur la fonction AjDate() qui, normalement, te permettra de repondre a ta question sur le dernier jour du mois. Je te donne pas la soluce direct, le but etant qd meme que tu piges ce que tu fais. Mais avec les indices que je t'ai donnés plus haut, tu devrais t'en sortir sans trop de mal.
Si tu as des questions, no soucy.
 
Cordialement

Message cité 1 fois
Message édité par SuppotDeSaTante le 29-03-2009 à 20:32:04

---------------
Soyez malin, louez entre voisins !
n°2849659
commentfai​re
Posté le 31-03-2009 à 11:47:03  profilanswer
 

SuppotDeSaTante a écrit :

Bonjour
 
Pour le dernier jour du mois, c'est un peu plus compliqué. Le plus simple etant d'oter 1 au premier jour du mois (suivant, en cours, peu importe), histoire de tomber sur le 31, le 30, le 29 ou le 28 en fonction du mois.
 
En fait ce que je fais, c'est que je construit la date. Le "&" sert a concatener des valeurs. Le CDate() transforme une variable en variable de date (obligatoire pour filtrer sur des valeurs de type date)
Donc :
- Date() = la date du jour.
- Mois(Date()) = Le mois de la date du jour. Renvoie 3
- Année(Date()) = L'annee de la date du jour. Renvoie 2009
Si tu concatene tout ca avec "&" :
- "01/" & Mois(date()) & "/" & année(date()) = 01/3/2009
Mais cela reste sous forme de chaine. Pour le transformer en date, tu mets un CDate() devant :  
- cdate("01/" & Mois(date()) & "/" & année(date())) = 01/03/2009 en date.
 
Je te laisse regarder l'aide sur la fonction AjDate() qui, normalement, te permettra de repondre a ta question sur le dernier jour du mois. Je te donne pas la soluce direct, le but etant qd meme que tu piges ce que tu fais. Mais avec les indices que je t'ai donnés plus haut, tu devrais t'en sortir sans trop de mal.
Si tu as des questions, no soucy.
 
Cordialement


 
 
Bonjour,
 
J'ai écrit ceci :
Est Null Ou >CDate("01/" & Mois(Date()) & "/" & Année(Date()))-1
apparemment ça fonctionne.
Es-tu d'accord avec cette formule ? c'était obligatoire d'utiliser AjDate ??
 
Cordialement
 :)  

n°2849660
SuppotDeSa​Tante
Aka dje69r
Posté le 31-03-2009 à 11:54:01  profilanswer
 

Non pas de souci, c'etait juste interressant de regarder comment fonctionne les operations sur les dates ;)
La tu enleves un jour, c'est 'facile', maintenant si tu voulais enlever un mois...


---------------
Soyez malin, louez entre voisins !
n°2849689
commentfai​re
Posté le 31-03-2009 à 14:16:01  profilanswer
 

SuppotDeSaTante a écrit :

Non pas de souci, c'etait juste interressant de regarder comment fonctionne les operations sur les dates ;)
La tu enleves un jour, c'est 'facile', maintenant si tu voulais enlever un mois...


 
 
 
J'ai réécrit la formule avec AjDate :
 
Est Null Ou >AjDate("d";-1;("01/" & Mois(Date()) & "/" & Année(Date())))
 
Pour enlever un mois j'écrirais :
AjDate("m";-1;("01/" & Mois(Date()) & "/" & Année(Date())))
 
J'ai fait un autre essai :
Pour les dates supérieures au 28/02/2008 : >AjDate("yyyy";-1;("01/" & Mois(Date()) & "/" & Année(Date())))
 
Est-ce que tout cela est correct ?
 
 

n°2849695
SuppotDeSa​Tante
Aka dje69r
Posté le 31-03-2009 à 14:34:57  profilanswer
 

Oui et non.
 
Déjà, par reflexe, je mets un Cdate devant ma construction de date, mais bon, Access le tolere...
 
Ensuite, pour les dates superieures au 28/02/2008 euh... Bah la ta formule marche seulement jusqu'a demain hein, car on est Mars... Et encore, il aurait fallu mettre >= pour ca soit vrai. Car ta formule, pour aujourd'hui 31/03/2009 renvoie >01/03/2008, et donc pour etre >28/02/2008 il faudrait dire >=29/02/2008 (année bisextile ;) ) ou dans l'absolu (etant un exemple tu n'as pas du voir que c'etait une année bisextile) : >=01/03/2008
La ce que tu fais, c'est non pas les dates superieures au 28/02/2008 mais toutes les dates qui sont superieurs au 1er du mois en cours de l'annee d'avant celle en cours.

Message cité 1 fois
Message édité par SuppotDeSaTante le 31-03-2009 à 14:37:26

---------------
Soyez malin, louez entre voisins !
n°2849710
commentfai​re
Posté le 31-03-2009 à 16:04:17  profilanswer
 

SuppotDeSaTante a écrit :

Oui et non.
 
Déjà, par reflexe, je mets un Cdate devant ma construction de date, mais bon, Access le tolere...
 
Ensuite, pour les dates superieures au 28/02/2008 euh... Bah la ta formule marche seulement jusqu'a demain hein, car on est Mars... Et encore, il aurait fallu mettre >= pour ca soit vrai. Car ta formule, pour aujourd'hui 31/03/2009 renvoie >01/03/2008, et donc pour etre >28/02/2008 il faudrait dire >=29/02/2008 (année bisextile ;) ) ou dans l'absolu (etant un exemple tu n'as pas du voir que c'etait une année bisextile) : >=01/03/2008
La ce que tu fais, c'est non pas les dates superieures au 28/02/2008 mais toutes les dates qui sont superieurs au 1er du mois en cours de l'annee d'avant celle en cours.


 
 
C'est vrai effectivement en 2008 il y avait 29 jours en février.
En fait, ce que je dois faire tous les mois c'est : sélectionner les dates > au dernier jour du mois précédent moins 1 an (ex. en mars 2009 : les dates > au 29/02/2008, en avril 2009 : les dates > au 31/03/2008)
est-ce que    >=AjDate("yyyy";-1;CDate("01/" & Mois(Date()) & "/" & Année(Date())))  convient ??   :sarcastic:  

mood
Publicité
Posté le 31-03-2009 à 16:04:17  profilanswer
 

n°2849714
SuppotDeSa​Tante
Aka dje69r
Posté le 31-03-2009 à 16:14:57  profilanswer
 

Tu n'es pas logique (sans reproche aucun hein)
 
Si je reprends ton expression :
AjDate("yyyy";-1;CDate("01/" & Mois(Date()) & "/" & Année(Date())))
 

  • CDate("01/" & Mois(Date()) & "/" & Année(Date())) renvoie : 01/03/2009
  • AjDate("yyyy";-1;CDate("01/" & Mois(Date()) & "/" & Année(Date()))) renvoie donc : 01/03/2008


Tout a l'heure tu as vu que pour enlever un jour un '-1' suffisait. Il faut donc enlever 1 à ton expression :
>=AjDate("yyyy";-1;CDate("01/" & Mois(Date()) & "/" & Année(Date())))-1
 
Cordialement

Message cité 1 fois
Message édité par SuppotDeSaTante le 31-03-2009 à 16:18:17

---------------
Soyez malin, louez entre voisins !
n°2849851
commentfai​re
Posté le 01-04-2009 à 12:21:51  profilanswer
 

SuppotDeSaTante a écrit :

Tu n'es pas logique (sans reproche aucun hein)
 
Si je reprends ton expression :
AjDate("yyyy";-1;CDate("01/" & Mois(Date()) & "/" & Année(Date())))
 

  • CDate("01/" & Mois(Date()) & "/" & Année(Date())) renvoie : 01/03/2009
  • AjDate("yyyy";-1;CDate("01/" & Mois(Date()) & "/" & Année(Date()))) renvoie donc : 01/03/2008


Tout a l'heure tu as vu que pour enlever un jour un '-1' suffisait. Il faut donc enlever 1 à ton expression :
>=AjDate("yyyy";-1;CDate("01/" & Mois(Date()) & "/" & Année(Date())))-1
 
Cordialement


 
 
Bonjour,  
 
Si je comprends bien, ce qui n'est pas du tout sûr !! ;) , aujourd'hui (le 1er avril 2009) >=AjDate("yyyy";-1;CDate("01/" & Mois(Date()) & "/" & Année(Date())))-1 signifie >ou = au 31/03/2008 mais je ne veux pas que le 31/03/2008 soit inclus, donc j'écris >AjDate("yyyy";-1;CDate("01/" & Mois(Date()) & "/" & Année(Date())))-1, ce qui signifie, je pense >au 31/03/2008. C'est ça ou je n'ai encore rien compris ??
Désolée de te solliciter aussi souvent, mais franchement je m'y perds dans toutes ces formules…
 

n°2849880
SuppotDeSa​Tante
Aka dje69r
Posté le 01-04-2009 à 15:22:23  profilanswer
 

T'inquietes aucun souci.
 
Et pour ta question : C'est exactement ca :jap:
 
Tu vois que tu t'en sors ;)


---------------
Soyez malin, louez entre voisins !
n°2849892
commentfai​re
Posté le 01-04-2009 à 16:00:36  profilanswer
 

SuppotDeSaTante a écrit :

T'inquietes aucun souci.
 
Et pour ta question : C'est exactement ca :jap:
 
Tu vois que tu t'en sors ;)


 
 
OK Merci
à un de ces jours peut-être...... :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Access - Expression pour requête

 

Sujets relatifs
Microsoft Access Runtime 2007 : impossible d'ouvrir une base avec ...Access ? Base de données ? Informations svp !
aide sur access, enfin plus une question ^^Access 2007 - Régler précision et arrondi
Filtre sur AccessPartager une base de donnée en access
Licence équivalente ? => Office pro sans access et office standardMS Access et Outlook
[Topic Unique] Access : vos questions et astucesProblème avec Microsoft office Access
Plus de sujets relatifs à : Access - Expression pour requête


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)