Rechercher entre deux date

hindweb Messages postés 44 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 9 décembre 2013 - 28 avril 2008 à 11:31
hindweb Messages postés 44 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 9 décembre 2013 - 10 mai 2008 à 17:41
bonjour a tous


j'ai un problème dans ma base de données j'arrive pas à faire une recherche dans ma table que je l'a crée sur access aprés je l'a importer à un formulaire à l'aide de l'assisstant et j 'ai crée dedans deux zone de liste une pour la date de début et l'autre pour la date de fin et aussi un boutton ok dont j'ai crée le code access voila la requête merci de me la corriger

Private Sub ok_Click()
f = ""
If Not IsNull(Me.debut) And Me.debut <> "" And Not IsNull(Me.fin) And Me.fin <> "" Then
If f <> "" Then
f = f & " AND clng([datedu]) BETWEEN " & CLng(Me.debut) & " AND " & CLng(Me.fin) & ""
Else
f = "clng([datedu]) BETWEEN " & CLng(Me.debut) & " AND " & CLng(Me.fin) & ""
End If
End If
Me.Filter = f
Me.FilterOn = True
End Sub

20 réponses

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
28 avril 2008 à 11:47
Bonjour,
A première vue, il y' a une incohérance.

tu fais:
f=""
et deux lignes plus bas
If f<>""  ...

ce qui fais que Me.Filter est toujours égale à ""

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
/PRE>
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
28 avril 2008 à 12:07
oui je sais , je me suis planté !

Me.Filter est toujours égale  à CLng([datedu]) BETWEEN " & CLng(Me.debut) & " AND " & CLng(Me.fin) & ""

c' est le f = f & " AND clng([datedu]) BETWEEN " & CLng(Me.debut) & " AND " & CLng(Me.fin) & "" qui n' a pas lieu d' être.

                
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
/PRE>
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
28 avril 2008 à 12:11
ou alors tu t' es trompé de variable notament celle concernant le premier bout de ton expression..

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
/PRE>
0
hindweb Messages postés 44 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 9 décembre 2013
28 avril 2008 à 18:36
Non j'ai pas trompé de variable mais toujours me donne une faute à ce ligne:
f = "clng([datedu]) BETWEEN " & CLng(Me.du1) & " AND " & CLng(Me.au1) & ""
si tu arrive pas à trouver la solution merci de me donner une autre solution dont je px faire une recherche à partir de la table entre deux date vraiment j'en ai besoin.
j'ai à ma table 4 colonne (nom , prenom,datedu,datefin)
0

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

Posez votre question
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
28 avril 2008 à 20:20
corrigé:
f =CLng([datedu]) & " BETWEEN " & CLng(Me.du1) & " AND " & CLng(Me.au1)

ps: t' as pas dit que t' avais une erreur, t' as bien dit:
j'arrive pas à faire une recherche dans ma table ..

Il est vrai aussi que j' aurais dû m' en apercevoir.
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
/PRE>
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
28 avril 2008 à 20:29
remarques, il faudra aussi corriger 
f= f & " AND " & clng([datedu]) & " BETWEEN " & CLng(Me.debut) & " AND " & CLng(Me.fin) & ""
mais c' est pas grave parceque cette ligne ne s' éxécute jamais.
Question :
c' est quoi du1 et au1 ? des zones de texte ?

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
/PRE>
0
hindweb Messages postés 44 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 9 décembre 2013
28 avril 2008 à 21:59
-dsl du1 =debut et au1=fin se sont mes deux zone de texte.

-toujours j'ai le meme problème j'ai une couleur jaune a ce ligne
f = CLng([du]) & " BETWEEN " & CLng(Me.debut) & " AND " & CLng(Me.fin)

-voila tout le code

Private Sub ok_Click()
f = ""
If Not IsNull(Me.debut) And Me.debut <> "" And Not IsNull(Me.fin) And Me.fin <> "" Then
If f <> "" Then
f = f & " AND " & CLng([datedu]) & " BETWEEN " & CLng(Me.debut) & " AND " & CLng(Me.fin) & ""
Else
f = CLng([datedu]) & " BETWEEN " & CLng(Me.debut) & " AND " & CLng(Me.fin)
End If
End If
Me.Filter = f
Me.FilterOn = True


End Sub
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
29 avril 2008 à 00:21
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
29 avril 2008 à 00:25
et tu as quoi comme message d' erreur ?
Donnes nous par la même occasion un exemple de valeur que tu saisi dans ces zones de texte.Je suppose que ce sont des dates.
0
hindweb Messages postés 44 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 9 décembre 2013
29 avril 2008 à 11:04
Erreur d'exécutuion '13':
Incompatibilité de type
et voila lorsque je clique sur déboguage me donne une couleur jaune a cette ligne:
f = CLng([datedu]) & " BETWEEN " & CLng(Me.debut) & " AND " & CLng(Me.fin)


et je saisie dans mes zone de texte une date


exemple debut:15/02/2008
et fin :05/03/2008
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
29 avril 2008 à 14:03
Bonjour,
il nous reste donc plus que le champ datedu.
-Soit il est de type Long.Dans ce cas pas besoin de le convertir
f = "[datedu]  BETWEEN " & CLng(Me.debut) & " AND " & CLng(Me.fin)


-Soit il est de type date.Il faut revoir alors notre synthaxe.
Tentes ceci:
f = CLng( & "[datedu]" & ) & " BETWEEN " & CLng(Me.debut) & " AND " & CLng(Me.fin)







<hr />

... Y'en a même qui disent qu'ils l'ont vu voler.




/PRE>
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
29 avril 2008 à 14:16
je viens de tester la synthaxe dans mon éditeur de code, et il accepte ceci:

F = CLng("[datedu]") & " BETWEEN " & CLng(Me.debut) & " AND " & CLng(Me.Fin)

Reste à savoir ce que cela donne en éxécution.

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
/PRE>
0
hindweb Messages postés 44 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 9 décembre 2013
29 avril 2008 à 22:51
Toujours j'ai le meme probleme(il me donne erreur) je pense qu'il y a un probleme a clng je pense qu'il manque quelquechose qui fait convertir mes donnéés aux zone de textes à une date
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
29 avril 2008 à 23:23
Si ce n' est que ça on pourrait faire:


Dim xDebut As Long, xFin As Long
xDebut=CLng(Me.Me.debut.Text)
xFin=CLng(Me.Fin.Text)


'Faire un
MsgBox xDebut & " / " & xFin
'et voir le contenu du msgbox.


'Si ça correspond, on poursuit avec
F = CLng("[datedu]") & " BETWEEN " & xDebut &  " AND " & xFin






 







<hr />

... Y'en a même qui disent qu'ils l'ont vu voler.




/PRE>
0
hindweb Messages postés 44 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 9 décembre 2013
30 avril 2008 à 22:24
bonjour
Toujours ne marche pas :(  je suis vraiment dsl pour le dérangement
il y a pas une autre solution à part ce code là parce que ce code la je l'ai trouvé juste à internet (http://www.pcastuces.com/pratique/windows/fiches/filtre.htm)
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
30 avril 2008 à 23:49
Salut,
beh si ton champ datedu est de type Date ,
il n' y a pas mieux que :
f = "datedu  >= #" & Me.debut.Text & _
"# AND datedu <= #" & Me.fin.Text & "#"

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
/PRE>
0
CarSoftAja Messages postés 26 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 21 mai 2008
9 mai 2008 à 15:46
Salut,
Il faut que le résultat final du filtre soit sous la forme: [datedu] BETWEEN #01/01/2008# AND #06/10/2008#
et au format américain, soit mm/jj/aaaa.

Je verrais donc bien quelque chose comme:

f = ""
If Not IsNull(Me.debut) And Me.debut <> "" And Not IsNull(Me.fin) And Me.fin <> "" Then
If f <> "" Then
f = f & " AND ([datedu] BETWEEN #" & Format(Me.debut, "mm\ / dd \ / yyyy") & "# AND #" & Format(Me.fin, "mm \ / dd \ / yyyy") & "#)"
Else
f = "[datedu] BETWEEN #" & Format(Me.debut, "mm \ / dd \ / yyyy") & "# AND #" & Format(Me.fin, "mm \ / dd \ / yyyy") & "#"
End If
End If
Me.Filter = f
Me.FilterOn = True
End Sub

PS: sans espaces dans la fonction format. j'ai juste séparé les \ et / par des espaces pour plus de vision, sinon on dirait un V
0
hindweb Messages postés 44 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 9 décembre 2013
10 mai 2008 à 00:35
wow merci beaucoup ça marche maintenant,vraiment je ne sais comment je te remercie tu es super
stp est ce que tu connais une méthode qui me permet d'imprimer seulement le tableau de résultat et pas toute la page(parce que lorsque j'imprime il me s'imprime toute la page avec les formulaire et les bouton)
et merci une autre fois
0
CarSoftAja Messages postés 26 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 21 mai 2008
10 mai 2008 à 10:51
Le mieux pour imprimer, serait de créer un état d'impression

Il faut créer l'état sur la table contenant toutes les données. Ensuite, il est possible avec un bouton sur le formulaire, d'ouvrir cet état en lui passant le filtre créé, afin qu'il n'affiche que les résultats correspondants
(regarde la méthode Openreport dans l'aide de Access)
expression.OpenReport(ReportName, View, FilterName, WhereCondition, WindowMode, OpenArgs)

Ca donnerait quelque chose comme:
DoCmd.OpenReport "Etat_Tabledate",acViewPreview, , Me.Filter
Dans l'argument WhereCondition, on lui passe le contenu du filtre actuel du formulaire (me.filter qui est par exemple égal à "[datedu] BETWEEN #01/01/2008# AND #06/10/2008#"), ce qui fait que l'état ne s'affichera qu'avec les enregistrements filtrés et pas toute la table.
Et voilà...
0
hindweb Messages postés 44 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 9 décembre 2013
10 mai 2008 à 17:41
Merciiiiiiiiiiiiiiiiiiiiiii ça marche très très bien
c super
0