Erreur de date

Résolu
moudz84 Messages postés 64 Date d'inscription mardi 5 septembre 2006 Statut Membre Dernière intervention 27 septembre 2007 - 13 août 2007 à 13:54
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 14 août 2007 à 06:08
salut, ca fait un bon moment que je perd mon temps sur une petite erreur:

dim rec as dao.recordest
dim d as date

d="31/12/2008"
set rec = currentDb.openrecordset("select * from A wher dtmaj <"&amp; d ,dbOpenDynaset)


- d renvoi bien "31/12/2008", je l'ai verifier avec isDate
- quand je met des ' ' autour de d dans la requete on m'envoi une erreur

voila mon probleme : la requete envoi rien alors que il y a de date < 31/12/2008
et quand j'echange la < par une > la requete envoi tous ce qui est avant d ex: 01/01/2007

est ce que quelqu'un peut me dire d'ou vien l'erreur???

ps; dtmaj est bien en format DATE

6 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
13 août 2007 à 14:28
Comme déjà dit et redit 1000 fois : il faut entourer les dates par des dièses et les mettre au format américain "MM/dd/yyyy) :
"select * from A wher dtmaj < #"& Month(d) & "/" & Day(d) & "/" & Year(d)  & "#"
3
moudz84 Messages postés 64 Date d'inscription mardi 5 septembre 2006 Statut Membre Dernière intervention 27 septembre 2007
13 août 2007 à 15:11
salut DARKSIDIOUS j'ai essayer ce que tu ma dit mai j'ai encore qlq petits problemes:

1- les date dans la base de donnée sont DD/MM/YYYY, est ce que je doit les changer aussi en MM/DD/YYYY?

2- dans ma table A j'ai 3 ligne et donc trois date, je les compare avec 01/01/2008 (je cherche ce qui est plus petit) je n'est que une qui sort alor que les trois doivent sortir....

celle qui sort est 01/01/2000
les autres sont 01/01/2007

est ce que t'aurai une idée de quoi ca pourrai etre?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 août 2007 à 15:18
tes champs sont bien de type Date/heure, rassures moi ?

concernant ton point 1, NON ! tes données sont (normallement) stockées en tant que Date, elles sont AFFICHEES DD/MM/YYYY pour répondre a TES parametre regionnaux.

pourtant, tes requetes SQL sont a rediger avec le format internationnal, indiqué par DarkSidious : MM/DD/YYYY
0
moudz84 Messages postés 64 Date d'inscription mardi 5 septembre 2006 Statut Membre Dernière intervention 27 septembre 2007
13 août 2007 à 15:33
les champs sont de type DATE seulement


 


1- si j'ai recuperer la date de la base et que je veut faire un test la dessus je doit aussi faire cela:
recordset("dtmaj") < #"& Month(d) & "/" & Day(d) & "/" & Year(d)  & "#"

ou c'est seulement dans les requete (select ...)

2- est ce que une ecriture comme celle ci est bonne:
d= "#01/01/"& year(date)-4 & "#"


desolé pour toutes ces questions mais j'ai trop de manipulation de date...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
13 août 2007 à 23:16
Tu pourrais essayer de "caster" tes dates en Long pour faire la recherche.

d = #31/12/2008#
set rec = currentDb.openrecordset("select * from A where CLng(dtmaj) <" & CLng(d)

Est-ce que ça fonctionne bien ?

MPi
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 août 2007 à 06:08
gaffe, c'est #12/31/2008#

mais sinon passer par un Long c'est OK

a noter que pour le foratage, on peut faire :

"... WHERE MaDate < #" & Format$(Critere, "MM\/DD\/YYYY") & "# "

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Rejoignez-nous