Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/08/2011, 11h34   #1
Invité de passage
 
Gilles Baudlet
Inscription : mars 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Gilles Baudlet

Informations forums :
Inscription : mars 2010
Messages : 3
Points : 1
Points : 1
Par défaut Filtre sur date incorrect

Bonjour,

je suis en train de créer une application sur Access 2003 et j'ai un soucis avec un filtre appliqué en VBA. J'obtient un résultat filtré, mais complètement faux...

Je rempli une variable filtre depuis 2 champs date, pour filtrer mon sous formulaire et obtenir les lignes dans les dates concernées :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
  filtre = filtre & "((T_LIVRABLE.DAT_" & Me.STATUT_SELECT_DATE & _
                          " between #" & dat_date_promotion_min & "# and #" & dat_date_promotion_max & "#)" & _
                          " and T_LIVRABLE.DAT_" & Me.STATUT_SELECT_DATE & " <> null)"
 
    'Appliquer le filtre si il n'est pas vide
    If filtre <> "" Then
        Me!F_LST_ELEMENT_LIVRABLE.Form.Filter = filtre
        Me!F_LST_ELEMENT_LIVRABLE.Form.FilterOn = True
    Else
        Me!F_LST_ELEMENT_LIVRABLE.Form.FilterOn = False
    End If
grâce à une ligne debug, je récupère le contenue de mon filtre qui me semble correct :
((T_LIVRABLE.DAT_MEP between #09/07/2011# and #13/07/2011#) and T_LIVRABLE.DAT_MEP <> null)

Quelqu'un peut-il me dire pourquoi le 18 est entre le 9 et le 13 pour Access ???
Images attachées
Type de fichier : png filtre.png (1,7 Ko, 2 affichages)
Type de fichier : png ss_form.png (6,1 Ko, 7 affichages)
gilou08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 13h24   #2
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
bjr,

ce test n'est pas bien écrit :
Code :
T_LIVRABLE.DAT_MEP <> null
essaye :
Code :
T_LIVRABLE.DAT_MEP is not null
sinon ça perturbe la requête
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/08/2011, 14h06   #3
Invité de passage
 
Gilles Baudlet
Inscription : mars 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Gilles Baudlet

Informations forums :
Inscription : mars 2010
Messages : 3
Points : 1
Points : 1
Par défaut idem

Merci pour ta réponse Arkham46, mais c'est exactement le même résultat.

J'avais utilisé "IS NOT NULL", j'ai mis "<> null" au cours de mes différentes tentatives.

Là j'ai remis le "IS NOT NULL".
gilou08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 14h32   #4
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
il y a aussi peut-être un soucis de format de date, le mois et le jour sont inversés pour le SQL :
http://access.developpez.com/faq/?page=dates#DateFormat

#09/07/2011# devient le 07 septembre 2011
#13/07/2011# devient le 13 juilllet 2011 (ne peut être inversé, 13 n'est pas un mois)

je ne sais pas si le Between tient compte de l'ordre des deux dates
si non, alors le 18 juillet est bien entre le 13 juilllet et le 07 septembre

il faut utiliser format(madate,"mm/dd/yyy") pour mettre la date dans le bon ordre

oui c'est tordu ...
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 15h07   #5
Invité de passage
 
Gilles Baudlet
Inscription : mars 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Gilles Baudlet

Informations forums :
Inscription : mars 2010
Messages : 3
Points : 1
Points : 1
Par défaut C'est ça !

Je pensais avoir déjà essayé mais non, c'est bien là qu'était le problème.

Le DatePicker ne renvoie pas le même format que celui utilisé pour les requêtes

J'ai ajouté 1 jour pour que le beetween inclue la dernière valeur et ça fonctionne.

Code :
1
2
3
4
5
6
7
 
'date minimum au bon format
dat_date_promotion_min = Format(Me.DAT_MIN_SELECT, "mm/dd/yy")
'date max + 1 jour pour le between
dat_date_promotion_max = DateAdd("d", 1, (Format(DateValue(Me.DAT_MAX_SELECT))))
'changement du format
dat_date_promotion_max = Format(dat_date_promotion_max, "mm/dd/yy")
Merci, c'est résolu
gilou08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h16.


 
 
 
 
Partenaires

Hébergement Web