Problème comparaison date [Résolu]

Signaler
Messages postés
77
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
27 septembre 2010
-
Messages postés
77
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
27 septembre 2010
-
Bonjour.
Je fais actuellement un projet de gestion d'une base de donnée. Dans ce programme, j'affiche le nom d'élément sortie ou rentré suivant une date précise, que l'utilisateur peut choisir. Jusqu'a aujourd'hui (01/02/2008), tou marchait bien, les objets s'affichaient bien, mais aujourd'hui.... j'ai un tas de bug...

voici mon code:

date_ref = DateAdd("m", -(mois), Date)'calcul de la date repère, on remonte le temps suivant le nombre de mois choisit par l'utilisateur


str_SQL "SELECT Nom_objet.Nom, Statut.N°, Statut.Statut, Statut.Date_rentree, Statut.Date_sortie FROM Nom_objet INNER JOIN Statut ON Nom_objet.N° Statut.N° Where (((Statut.Statut) = " & stat & ") And ((" & date_aprendrencompte & ") <= #" & date_ref & "#)) ORDER BY " & str_tri
Impression.Data1.RecordSource = str_SQL
Impression.Data1.Refresh

bon stat est le statut choisit par l'utilisateur (rentré, sortie ou perdu),date_aprendrencompte c'est quelle date de la base de donnée on compare (celle de sortie ou de rentré de l'objet), et la date_ref est la date de comparaison que l'utilisateur choisit.

Que je rentre n'importe quelle date, il y a des objets qui ne s'afficheront pas, alors qu'il le devrait. Dans Access directement, ca marche, mais pas là. Que faire?

11 réponses

Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Salut,
A mon avis il faut revoir ta méthode de calcul.
date_ref = DateAdd("m", -(mois), Date)'calcul de la date repère

le problème se situe probablement là.
Essaies d' appliquer, sur le papier,  cette formule à des exemples concrets.
<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Bonjour ,
As_ tu regardé dans quel format sont enregistrées les dates dans Access.En "DD/MM/YYYY" ou en "MM/DD/YYYY" ?
En tout cas voici comment moi je compare mes dates :
Je transforme la date en String en concaténant dans un format précis,l' année puis le mois
puis le jour.


SELECT ...And (('" & _
Format$(Year(date_aprendrencompte,"0000") & _
Format$(Month(date_aprendrencompte,"00") & _
Format$(Day(date_aprendrencompte,"00") & _
"' <='" & _
Format$(Year(date_ref,"0000") & _
Format$(Month(date_ref,"00") & _
Format$(Day(date_ref,"00") & _
"' ORDER BY..."





<hr />

... Il y' en a même qui m' ont vu voler.
<hr />
Messages postés
77
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
27 septembre 2010

Le format est bien en JJ/MM/AAAA.
Par contre moi je me demande si ce n'est pas un problème avec le mois de février 2008, vu qu'on est en bissextile ou autre... Parce que quand je change la date systeme et que je met une date avant celle d'aujourd'hui, tout marche bien; qd je met une date supèrieur à aujourd'hui, dés que mon champ de recherche dans mon programme arrive au mois de février 2008, bug!
Alors je sais pas comment faire, d'autant que comme je l'ai dit, dans Access directement, ca marche...
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Si les dates antérieures sont enregistrées et validées,
c' est qu 'i n' y a pas de 29/02/2007. par exemple.
Si tu entres 29/02/2008 , la date est balide.
De plus 01/02/...  est correcte indépendement de l' année.

<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
toutesfois je reste convaicu que le 01/02/2008 est transformé en 02/01/2008.
ça s' est déjà vu !

<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
Messages postés
77
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
27 septembre 2010

Lorsque je fait un deboggage, la date de comparaison est bien 01/02/2008. Le problème ce montre aussi si je fait un recul de + de 1mois, la date de comparaison est valide, mais je n'ai aucun obet dans la base créé. quand je recul de 1 mois, c'est bon, mais ensuite quand je compare avec la date d'aujourd'hui, ba il ne me trouve plus rien.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
essaies avec :
...DateValue(date_aprendrencompte) & ") <= #" & DateValue(date_ref) & "#...

Sinon appliques ma méthode , juste pour voir.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
salut,
à tout hasard...
la base sur laquelle tu travailles n'est pas nommée en fonction du mois?
genre tu vérifies actuellement une base de janvier alors que c'est férvrier, base non créée, trop de "on error resume next" pour le voir ?

il faudrait isoler ce qui a changé (pc ?) depuis ta dernière utilisation...
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
77
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
27 septembre 2010

Je vais tester ta méthode Libre_max.
Sinon pour répondre à tes question PCPT, la base n'est pas nommé par rapport aux mois, et le pc sur lequel je travaille n'a pas changer, j'ai essayer de le tester chez moi mais j'ai un problème de "pilote ISAM introuvable",docn faut que je règle ca. Je vous tiens au courant
Messages postés
77
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
27 septembre 2010

Bon pour tes méthode Libre_max, ca n'a pas marché, ca me fait la même chose.
Je n'arrive pas vraiment à comprendre le truc, si j'appelle une requete qui prend les objet ayant une date infèrieur au 04/12/2007, il me renvoit rien (sachant que j'ai des objets datés du 06/2007 par exemple), et si je revient de seulement 1 mois (04/01/2008 donc) il me renvoit tous les objets, sachant que certains sont daté du 01/02/2008.... j'y comprend rien....
Alors je me pose des questions: j'ai 6 objets data sur différente form, elle tape toute dans la base de donné, pourraient-elles interférer les unes avec les autres? mais ca me parait bizard, car le problème est le même quel que soit la situation, et le problème est survenue d'un coup.
autre question: le fait que mes date dans ma BDD soit au format date/heure est il important, je compare dans ma requete avec une variable string(mais si je change en date, le problème persiste)?
Messages postés
77
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
27 septembre 2010

Bon ok mon problème vient bien de là!!!
Non pas que date_ref soit mal orthographié (aujourd'hui, j'ai bien 05/02/2008), mais dans ma requête, il ne compare que le mois et l'année. Par exemple, si je rentre "05/02/2008" dans date_ref, il me donne toutes les dates infèrieur au 05/2008!
Alors comment changer le format(pourtant il m'avait l'air bon), ou est ce que ca vient de ma requete tout simplement?
Ce que je comprend pas, c'est que avant tout marché bien, et maintenant ba ca bug... peut etre parce que j'avais des dates >12 (comme le 25/01/2008), donc comme le jour était invalide pour lui (elle ne correspond à aucun mois), il me prennais bien le mois.