Date access vb

bigboy2g15 Messages postés 66 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 3 juin 2004 - 26 mai 2004 à 09:48
bigboy2g15 Messages postés 66 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 3 juin 2004 - 26 mai 2004 à 11:47
Bonjour :

Je compare une data de ma base access à celle dans vb.
Cela marche avec le supérieur et inferieur, mais pas avec l'égalité.

Je pense que cela est due à l'heure et les min, mais pourtant j'ai formater les dates pour que le soft n'en prenne pas compte.

Voici mon code :
Data2.RecordSource "Select audit.date_audit from audit where format(audit.date_audit,'dd - mm - yyyy') #" & Format(DTPicker1.Value, "dd - mm - yyyy ") & "# ;"

Data2.Refresh


Si quelqu'un peu me dire ou est l'erreur

11 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
26 mai 2004 à 09:53
Excuses mon ignorance, mais a quoi servent les # ??

sinon, il te suffit de vérifier les chaines renvoyées par ton Format(date_audit) et par le Format ( DTPicker) et de les comparer...
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 mai 2004 à 09:54
C'est mortel pour les performances ton procede. Une date est stockee en 64 bits flottant (double), fais une comparaison numerique.
>= jour AND < JrPlusUn

ciao...
BruNews, Admin CS, MVP Visual C++
0
bigboy2g15 Messages postés 66 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 3 juin 2004
26 mai 2004 à 10:11
Merci pour les réponses.

Renfield, je voudrai bien verifier la chaine renvoyé par le Format (date_audit) mais je ne sais pas comment faire :

J'ai essayé ceci mais ca ne marche pas :


Data2.RecordSource = "Select format(audit.date_audit,'dd - mm - yyyy') from audit"
data2.refresh

var_temp = Data2.RecordSource.Fields("date_audit") 


Mais il dit que le champ date audit n'existe pas.
Sais tu comment faire ?

( pour les # je croi qu'il faut entourer les champs date avec ceci pour les requete access )

BruNews, merci de ta suggestion, mais cela donne le même problème, il va aussi sur le jour suivant ( a cause de heure min je pense ). Ma requette donne ceci :

   Data2.RecordSource = "Select audit.date_audit, sujet_audit from audit where format(audit.date_audit,'dd - mm - yyyy') > #" & Format(DTPicker1.Value - 1, "dd - mm - yyyy ") & "# and format(audit.date_audit,'dd - mm - yyyy') < #" & Format(DTPicker1.Value + 1, "dd - mm - yyyy ") & "# ;"


Merci
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
26 mai 2004 à 10:26
J'abonde dans le sens de BruNews ;) sur les cycles que cela doit prendre....

C'est normal qu'il te dise ne pas connaitre le champs audit....
car il n'existe pas !!! Il te faut nommer le champ créé

Data2.RecordSource = "Select format(audit.date_audit,'dd - mm - yyyy') as date_audit from audit"
data2.refresh
0

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

Posez votre question
bigboy2g15 Messages postés 66 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 3 juin 2004
26 mai 2004 à 10:35
Je ne comprend pas pourquoi cela doit prendre beaucoup de cycle ( mais bon, ce n'est pas grave, la requete n'est executé qu'une seule foi )

J'ai regardé ce que cela sort des deux cotés, cela sort exactement la même chose, mais quand il les compares, il dit que c'est différents.
Merci si vous avez la réponse
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
26 mai 2004 à 10:43
je trouve étrange tes comparaisons....

pourquoi ne formattes tu pas tes données sous la forme 'YYYYMMDDNNSS'

bref, on est pas plus avancés ;)
0
bigboy2g15 Messages postés 66 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 3 juin 2004
26 mai 2004 à 11:11
Bon, j'ai trouvé à force de bidouillage.

Vu que vous critiquié déja les cyles que ca prennait, la ca va etre pire :o) mais bon, ca marche

ma solution :

Data2.RecordSource "Select audit.date_audit,sujet_audit from audit where format(audit.date_audit,'dd-mm-yyyy') format(cdate('" & DTPicker1.Value & "'),'dd-mm-yyyy')"


Merci encore
0
bigboy2g15 Messages postés 66 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 3 juin 2004
26 mai 2004 à 11:30
En fait non, cela marche pour le = , mais pas pour les > ou <.

Pour lui le 25/05/04 est superieur au 02/06/04.

Je vais chercher une autre solution.

Merci qd mm.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
26 mai 2004 à 11:34
normal !! tu compre des chaines de caractère avec des >

y'a pas un problème, là ??

tu constateras que 20040525 < 20040604
0
cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 juillet 2012
26 mai 2004 à 11:40
J'ai vérifié dans une de mes appli. j'utilise aussi le DTPicker pour faire une comparaison de date avec une date dans une base Access mais je n'ai pas ce problème tout fonctionne bien. En gros je format le resultat du DTPicker en format date courte avant de l'utiliser comme ceci:

Dim DateValue1 as string
DateValue1 = Format(DTP_Date1.Value, ShortDate)
DateValue1 = DateSlash(DateValue1)
(pour DateSlash voir annotation en fin de texte )

ShortDate est une variable string du format de date courte par exemple "d/MM/YYYY" dans mon appli. je vais chercher cette information dans la base de registre du système car celle-ci change selon les paramètres pays.

voici ensuite la requete SQL que j'utilise

Sql_Cond = Sql_Cond & "(((FFacture." & ReDate & ")" & DSign & "#" & DateValue1 & "# ));"

Dsign est une variable string d'opérande de date comme ">","=" etc..

A noter aussi une petite fonction pour parer un bug Microsoft dont voici le code

'******************************************************************************************
'* Cette fonction converti le format date jj.mm.yyyy par jj/mm/yyyy *
'* Pour parer à un bug de format de date Microsoft MERCI BILL !! *
'******************************************************************************************
Public Function DateSlash(ItemDate As String) As String
Dim i As Integer
Dim Spot As String

For i = 1 To Len(ItemDate)
If Mid(ItemDate, i, 1) = "." Then
Spot = Spot & "/"
Else
Spot = Spot & Mid(ItemDate, i, 1)
End If
Next i
DateSlash = Spot

End Function

Pascal Laurençon
Mieux vaut un petit clic que deux grandes claques..
Mieux vaut un naze bin qu'un naze tout court..
0
bigboy2g15 Messages postés 66 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 3 juin 2004
26 mai 2004 à 11:47
Renfield : nomralement le Cdate ne convertit pas une chaine de caractère en date ? j'ai mis cette fonction un peu aux hasard, je ne sais pas si ca marche ds une requette, mais vu qu'il n'a pas gueuler à l'execution, je pensais que c'était bon.

Merci pluplu, je vais essayer tout de suite.
0