Filtrer les enregistrements entre deux dates

Résolu
cs_chat84 Messages postés 5 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 1 juin 2006 - 22 mai 2006 à 16:02
cs_chat84 Messages postés 5 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 1 juin 2006 - 23 mai 2006 à 13:07
Bonjour,

J'essaye dans un formulaire de sortir les enregistrements qui sont entre deux dates entrées dans des textbox.  (rcomplaintdate1 et rcomplaintdate2) le champ qui contient la date dans la table est "complaintdate"

lorsque je teste, access plante sur les lignes rouges. il marque Type mismatch. Je comprend pas ou est l'erreur.

Quelqu'un aurait une idée ?

Merci pour votre aide

private sub filtre_click()
f = ""
If Not IsNull(Me.rcomplaintdate1) And Me.rcomplaintdate1 <> "" And Not IsNull(Me.rcomplaintdate2) And Me.rcomplaintdate2 <> "" Then
If f <> "" Then
f = f & " AND clng([complaintdate]) BETWEEN " & CLng(Me.rcomplaintdate1) & " And " & CLng(Me.rcomplaintdate2) & """"
Else
f = "Clng([complaintdate]) BETWEEN " & CLng(Me.rcomplaintdate1) & " AND " & CLng(Me.rcomplaintdate2) & ""
End If
End If

Me.Filter = f
Me.FilterOn = True

end sub

3 réponses

cs_chat84 Messages postés 5 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 1 juin 2006
23 mai 2006 à 13:07
J'ai réussi en faisant comme ca, et tu avais raison, il faut utiliser les #
Merci et A+
Chat

If Not IsNull(Me.rcomplaintdate2) And Me.rcomplaintdate2 <> "" Then
    Dim vDebut, vFin As String
    vDebut = "#" & Month(rcomplaintdate1) & "/" & Day(rcomplaintdate1) & "/" & Year(rcomplaintdate1) & "#"
    vFin = "#" & Month(rcomplaintdate2) & "/" & Day(rcomplaintdate2) & "/" & Year(rcomplaintdate2) & "#"
    If f <> "" Then
        f = f & " AND complaintdate between " & vDebut & " and " & vFin & ""
    Else
        f = "complaintdate between " & vDebut & " and " & vFin & ""
    End If
End If
3
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 mai 2006 à 20:23
Salut
Je connais pas trand chose à VBA, mais les dates ne sont pas des Long, mais des types Date.
Donc, n'utilise pas de conversion CLong
Je suppose que c'est de l'Acess :
Les formats de type Date (dans le type de champ de DB) doivent être encadrés par des #
Exemple :
" AND [complaintdate] BETWEEN #" & Me.rcomplaintdate1 & "# And #" & Me.rcomplaintdate2 & "#"
+ A quoi sert le quadruple " à la fin de ta 1ere ligne rouge ? --> à insérer un simple " dans ta chaine
Mais pourquoi ? aucun début de chaine n'a été inséré avant ! Là, c'est sûr, la syntaxe n'est pas redondante, donc ne marchera pas.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 2
23 mai 2006 à 12:01
salut, visiblement tu cherche la syntaxe de la requète sql

Alors crée la requète en mode assistant, ensuite passe en mode création et regarde le code sql de la requête. tu n'aura plus qu'a changer les dates par les valeurs de tes contrôles.

+++++

[mailto:K@lobit K@lobit] < Ne pas clicker ici
Mon Site < Mais ici
0
Rejoignez-nous