IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Filtre sur date incorrect [AC-2003]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 Images attachées   

  2. #2
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    bjr,

    ce test n'est pas bien écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T_LIVRABLE.DAT_MEP <> null
    essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T_LIVRABLE.DAT_MEP is not null
    sinon ça perturbe la requête

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    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".

  4. #4
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    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 ...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. MySQL + c++ builder : Filtre sur date inposible
    Par fpascal dans le forum MySQL
    Réponses: 8
    Dernier message: 09/10/2008, 09h46
  2. [BOXI] Problème de filtre sur date
    Par Julien59 dans le forum Deski
    Réponses: 6
    Dernier message: 10/06/2008, 10h25
  3. Filtre sur date du jour + date du jour+1
    Par pierrot67 dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/05/2007, 07h21
  4. Problème de filtre sur date avec ADOQuery
    Par lingli dans le forum Bases de données
    Réponses: 12
    Dernier message: 30/04/2006, 15h40
  5. Filtre sur date
    Par MagicManu dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/08/2005, 00h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo