Reqête SQL anec clause Where sur champ de type date

arystoc Messages postés 41 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 juillet 2006 - 22 nov. 2004 à 15:14
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 22 nov. 2004 à 17:45
Bonjour,

J'ai une base de données sous accès, mon appli en VB6. Dans une de mes tables, il ya un champ de type "Date/Heure".

Lorsque je lance ma requête "select * from nomtable where champdate=ValeurSaisieDeTypeDate", le résultat indique qu'il n'ya rien.

Par contre, si je change le type du champ en "Texte", et je lance ma requête "select * from nomtable where champdate = 'ValeurSaisieDeTypeString'", j'ai bien des éléments dans mon recordset, mais je ne peut pas traiter la clause "Where champDate between 'Valeur' and 'Valeur2'".

Comment je dois faire ?

Merci de votre aide

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 nov. 2004 à 17:45
Salut arystoc
Les dates, éternel problème.
Plusieurs tests à faire :
-1- Comme écrit dans l'aide, dans les requètes SQL, les dates doivent être encadrés par des # (comme les ' pour les chaines)
Exemple :
"... Where MaDate > #" & MaVar & "#"

Mais se pose le problème de format de date, car les # convertissent les dates du format local vers le format US, et le problème est que la conversion ne se fait pas toujours (si le jour est inférieur ou égal à 12) car il pense que c'est le mois.

-2- Utilisation de DateValue et TimeValue :
Essaye ce genre de syntaxe :
Where MaDate > DateValue('" & MaVar & "') & " " & TimeValue('" & MaVar & "')"

Tu remarqueras que DateValue et TimeValue sont interprétés par le SQL et pas par le VB (car à l'intérieur de la chaine)

Chez moi, cette dernière méthode fonctionne.

Vala
Jack
NB : Je ne répondrai pas aux messages privés
0
Rejoignez-nous