Recherche desesperement aide pour les comparaison de date

Signaler
Messages postés
10
Date d'inscription
jeudi 28 mars 2002
Statut
Membre
Dernière intervention
18 mai 2011
-
 Utilisateur anonyme -
Je suis entrain de me prendre le choux avec un probleme pour lequel j suis persuadé qu'il y a une solution mais laquelle ?
Cela concerne les comparaison de date.
J'ai une bdd (base de donnée) sous Access 2000 avec une table ou mes date sont au format abregé.
Comme j'affiche à l'utilisateur cette table dans un MSFlexgrid j convertit l'arrivée de mon champ date avec format :
format(date1,"dd/mm/yyyy")

Maintenant j une feuille de recherche qui permet à l'utilisateur de rechercher une fiche en fonction de la date sDate2 ( avec =, > et <). Ma date sDate2 est au format "dd/mm/yyyy".
Mes requete sont de la forme :
1/ "SELECT * FROM Table1 WHERE sDate=Datevalue(#" & sDate2 & "#)
2/"SELECT * FROM Table1 WHERE sDate<Datevalue(#" & sDate2 & "#)
3/"SELECT * FROM Table1 WHERE sDate>Datevalue(#" & sDate2 & "#).

Cela fonctionne mais pas pour toute les dates. Par exemple pour les jours allant de 01 à 09 pour les annees avant l'année courante cela ne fonctionne pas.

Quelqu'un aurait t'il une solution en gardant mes formats de date et en etant sur que cela fonctionne à chaque fois.

Merci d'avance pour l'aide
%-6

6 réponses

Messages postés
31
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
11 octobre 2002

bonjour,

dans les script sql les dates doivent être convertit au format américain autrement il y a inversion du mois et du jour (si c'est possible -> d'ou ton problème)

donc => ...#" & format(ladate,"mm/dd/yyyy") & "#....

Cordialement
sébastien Ferrier
Concepteur composants
alfa info
s.ferrier@alfainfo.fr
Messages postés
20
Date d'inscription
lundi 15 avril 2002
Statut
Membre
Dernière intervention
3 octobre 2003

Benoit Stéphane

yep je confirme, j'ai eu le même prob, et la solution est effectivement variable = format(variableDate, "mm/dd/yyyy")
Messages postés
33
Date d'inscription
mardi 17 juin 2003
Statut
Membre
Dernière intervention
12 mars 2009

moi j'ai un autre probleme a cause d'acces de m.....
en ajoutant une date sql = si acces peut inverser la date pour la mettre au format anglais il le fais sinon il l'inverse pas
ex : 31/12/2004 au format francais il peut pas l'inverser il la laisse tel quel
01/02/2004 il peu l'inverser alors il le fait et la transforme au format anglais : 02/01/2004

et le meme probleme en inverse
si tu rentre une date invalide au format anglais comme par exempe le 13/31/2004 (MM/dd/yy) ben la il l'inverse au lieu de dire que la date n'est pas valide

conclusion faites gaffe aux dates fait nimporte quoi avec!
tmeg
Messages postés
1
Date d'inscription
mardi 28 juin 2005
Statut
Membre
Dernière intervention
28 juin 2005

salut a tous,
il y a bien longtemps que vous avez reglés ce probleme ...
mais moi c'est ajd'hui que je m'y frappe le nez

bd Access sous windows2000 Francais et VB6
dans ma bd j'ai un champs de type "date abrégé" au format jj/mm/yy
dans mon formulaire en VB6 j'ai un champs text.
les gens peuvent faire une recherche par date, ils entrent une date (au bon format) et j'ai rajouté CDate(...) lorsque je manipule ce champs text.
a quoi servent les # # dans vos exemples, jamais vu ca avant !!??

voici mon code
sql "select * from BdeT where dateV " & _
CDate(frBdeT.TxRecherche.Text) & " or dateV > " & _
CDate(frBdeT.TxRecherche.Text)

mais voila : mon resultSet est soit vide soit il contient tous les tuples de la table ... ???
comme si il n'y avait pas de clause "where" ou pas de comparaison du tout !!

merci de m'aider ... n'en peux plus !!

Bonicard
Messages postés
1
Date d'inscription
mercredi 8 novembre 2006
Statut
Membre
Dernière intervention
24 juin 2012

sql = "select * from BdeT where sDate = Datevalue(#" & format(sDate2,"mm/dd/yyyy") & "#)"
ça marche
bonne chance

7 ans plus tard; pas mal du tout.