[Access - VBA] Recherche entre deux dates

Résolu/Fermé
DecK - Modifié par DecK le 7/05/2012 à 13:57
 DecK - 9 mai 2012 à 15:17
Bonjour,

Je développe actuellement une petite base de données sous Access.
J'ai créé une table sous SQL server dans laquelle j'ai un champ DateIntervention.

Lorsque je créé sous access une table lié sur cette table, il me récupère la date en format YYYY-MM-DD.

De ce fait, pour afficher la date dans le format souhaité, j'utilise une requête, dans laquelle je précise en SQL : Format([ma_table_liée].[DateIntervention];'jj/mm/aaaa'). Le champ s'appel Expr1.

Jusque là tout va bien (normalement !).

Ensuite j'ai créé un formulaire de recherche, dans lequel je recherche entre deux dates (TxT_DateDebut et TxT_DateFin).
Voilà donc la syntaxe de ma "formule" (trouvée sur le net d'ailleurs) :

Private Sub Btn_Filtre_Click()

f = ""


If Not IsNull(Me.TxT_DateDebut) And Me.TxT_DateDebut <> "" Then

f = "CLng([Expr1]) BETWEEN " & CLng(Me.TxT_DateDebut) & " AND " & CLng(Me.TxT_DateFin) & ""

End If

Me.Filter = f
Me.FilterOn = True
End Sub

Mon souci est lorsque je clic sur le bouton lié à ce code il m'affiche le code erreur "3464 : type de données incompatible dans l'expression du critère"...

Merci par avance pour votre aide !


3 réponses

Pour information, j'ai trouvé ! Après plusieurs jours de recherche.....

Cdate([Expr1]) BETWEEN #" & CDate(Me.TxT_DateDebut) & "# AND #" & CDate(Me.TxT_DateFin) & "#"

Visiblement il ne considère pas mes dates comme des dates.... Maintenant ca fonctionne !

Merci à vous pour vos idées.
2
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 7/05/2012 à 15:56
Bonjour,

Comme c'est du texte attendu tu as essayé de lui passer la date en tant que telle ?
"17/03/2012" ou "2012/03/17"
Et pour convertir une date, datevalue(ta date en texte) marche bien aussi.

Sinon sur vba excel, dans certains cas, pour représenter une date on l'encadre de #, c'est peut-être ce qu'il attend aussi : #17/03/2012#

eric



eric
0
Bonjour, merci pour ta réponse.
Néanmoins une nouvelle erreur : 3075 : Erreur de syntaxe dans la date dans l'expression "CLng([Expr1]) BETWEEN #40544# AND #40908"

Ce qui est bizarre c'est que dans le message d'erreur, il manque le dernier dièse, alors que quand (en mode débuggage) je survole ma variable "f" il me met bien la formule : f="CLng([Expr1]) BETWEEN #40544# AND #40908#"
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
7 mai 2012 à 17:24
J'aurais gardé la date au format date #jj/mm/aaaa# ou #aaaa/mm/jj# en laissant tomber le cnum()
eric
0
Plus d'erreur, mais ca ne filtre rien du tout :(
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
7 mai 2012 à 19:01
je pense que tu as essayé #jj/mm/aaaa# et #aaaa/mm/jj#, je ne peux pas t'aider plus, désolé
eric
0
Ok merci quand même pour ton aide !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 mai 2012 à 10:01
Bonjour

Un exemple de requete entre 2 dates à partir d'un formulaire (F_relance) qui fonctionne:

Entre [forms]![F_relance]![txt_datedeb] Et [forms]![F_relance]![txt_datefin]
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 mai 2012 à 10:14
ci joint
capture écran de la requete
https://www.cjoint.com/?3EjknIoBqoE
0
Bonjour Michel-m
Merci de votre réponse.
Le problème c'est que j'ai déjà un formulaire avec des champs à renseigner, j'avais bien pensé à faire quelque chose comme ca, mais ce n'est pas dans mon cahier des charges :)
Merci néanmoins.
0