[Access - VBA] Recherche entre deux dates [Résolu/Fermé]

Signaler
-
 DecK -
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
23630
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
12 novembre 2020
6 458
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
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#"
Messages postés
23630
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
12 novembre 2020
6 458
J'aurais gardé la date au format date #jj/mm/aaaa# ou #aaaa/mm/jj# en laissant tomber le cnum()
eric
Plus d'erreur, mais ca ne filtre rien du tout :(
Messages postés
23630
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
12 novembre 2020
6 458
je pense que tu as essayé #jj/mm/aaaa# et #aaaa/mm/jj#, je ne peux pas t'aider plus, désolé
eric
Ok merci quand même pour ton aide !
Messages postés
16295
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
13 novembre 2020
3 066
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]
Messages postés
16295
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
13 novembre 2020
3 066
ci joint
capture écran de la requete
https://www.cjoint.com/?3EjknIoBqoE
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.