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

Access Discussion :

Problème de Filtrage selon une sélection dans un menu déroulant


Sujet :

Access

  1. #1
    Candidat au Club
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Problème de Filtrage selon une sélection dans un menu déroulant
    Bonjour à tous,

    Etant un nouveau sur le forum, je tiens à préciser que j’ai pris la peine de lire la FAQ (tout du moins les points concernant mon problème) , et surtout, j’ai soigneusement éplucher l’ensemble des discussions ayant pour thème : « Filtrer selon la sélection d’un menu déroulant » (nottament , les sujets lancés par frollo, et petitLoup71) . Bien entendu, si je me suis décidé à créer cette discussion, c’est parce que je n’a ias trouver de solution à mon problème ! Le problème c’est que ça plus qu’urgent, et que je commence à accumuler du retard sur mon planning !

    Bref, voici le code qui me pose de "gros" problème depuis 3 jours....:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    Private Sub LISTEDATE_Click()
    
    Dim DateTemp As Date
    DateTemp = Me![LISTEDATE].Value
    
    Debug.Print "Date=" & DateTemp
    Dim k As Byte
    Dim NUMANNEE1 As Integer
    
    ' & " AND Year(DATE) = " & NUMANNEE1 , A Ajouter à la requête lorsqu'elle  ' 'marchera 
    Call UpdateDateSuivit
    
    
                    Me.Filter = "[EBARBAGE].[DATE]=" & DateTemp
                    Me.FilterOn = True
                    'Me.Requery
                                                  
            For k = 1 To Me.RecordsetClone.RecordCount
            DoCmd.GoToRecord acActiveDataObject, , acGoTo, k
            
            DATE_AfterUpdate
            Next
    End Sub
    L'objectif ici est en fonction de la date sélectionner dans la zone de liste, d'afficher tout les enregistrements relatifs à cette dante, contenu dans un table.

    LES FAITS :

    Private Sub LISTEDATE_Click() : méthode évenementielle , rattaché à un contrôleur de type zone de liste (LISTE_DATE) .
    La table sous-jacente (EBARBAGE) à mon formulaire principale, possède une colonne DATE.
    J'extraie l'ensemble des données nécessaire à ma liste déroulante de la table (en éliminant les doublons au passage...) Grâce à la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT DISTINCT EBARBAGE.DATE
    FROM EBARBAGE
    ORDER BY EBARBAGE.DATE;
    En désespoir de cause, j'ai créer la variable "DateTemp", afin de pouvoir stocker temporairement la valeur courante de ma zone de liste! un "Debug.Print" m'a permis de constater que l'affectation de variable se passe bien, le problème ne vient pas de là, c'est au niveau des lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
               Me.Filter = "[EBARBAGE].[DATE]=" & DateTemp
                    Me.FilterOn = True
                    'Me.Requery
    Que de toute évidence, il y'a un PROBLEME!! (enfin! c'est ce je je pense...)

    J'ai bien de vérifier que mes paramètres "DATE" (de la table EBARBAGE) et ceux de la zone de liste possédait le MEME format (le format date,abrégé) , j'ai même rajouter une clé primaire (à priori inutile) à ma table; en pensant que c'était peut être indispensable pour le fonctionnement du filtre, ...RIEN!
    Dès que je lance le formulaire et que je sélectionne une date dans ma zone de liste LISTEDATE , je n'ai pas de mise à jour de mon formulaire; en fait, l'ensemble des enregistrements de la table qui sont afficher par défauts, disparaîssent tous !!

    Honnêtement, je n'y comprends plus RIEN! j'ai tout essayer, mais dans le meilleur des cas, je suis juste parvenu à obtenir une boîte de dialogue qui me demande d'entrer manuellement la variable DateTemp!
    Une fois cela fait, le filtrage marchait correctement, mais bon! mon but c'est de faire fonctionner la liste déroulante, et puis... je réussit même plus à faire apparaître cette fichue boîte de dialogue, tellement j'ai trifouiller mon code! (le nouuuuuuuuuuuuub)

    Bon! j'espère que j'ai été assez "clair", c'est mon tout premier post sur ce forum, alors soyez indulgent SVP! Bien entendu, si il y'a besoin de la moindre précisions, voir plus, je suis à votre entière disposition! Sinon, je n'ai qu'une dernière chose à ajouter : A l'AIIIIIIIIIIIIIIIIIIIIIIDE!!

  2. #2
    Membre actif
    Inscrit en
    Septembre 2004
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 179
    Points : 217
    Points
    217
    Par défaut
    Salut,

    Les données de la table à filtrer son donc représentées dans un sous-formulaire je suppose. En partant de cela, il suffit de changer le RecordSource de ton sous-formulaire en spécifiant la nouvelle requête Sql et de rafrachir le sous-formulaire

    Dim Sql As String

    Sql = "SELECT DISTINCT EBARBAGE.DATE " & _
    "FROM EBARBAGE " & _
    "WHERE EBARBAGE.DATE = #" & Format(Me.[LISTEDATE].Value,"MM/DD/YY") & "# " & _
    "ORDER BY EBARBAGE.DATE;"
    FORM_MONSOUSFORM.RecordSource = Sql
    FORM_MONSOUSFORM.Requery

  3. #3
    Candidat au Club
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci de ta reponse hyper rapide Macno, mais en fait, ... le données de la table à filtrer ne sont pas représenter dans un sous formulaire, j'aurais dû le préciser dsl... En fait, les données sont insérer dans une série de contrôle de type zone de texte, aux quelles ont été associé les données de la table (via le paramètre "sources de contrôle"). Donc,pas de sous formulaire....

  4. #4
    Candidat au Club
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Svp Besoin De Votrev Aide!
    Heuuuu ! svp c’est encore moi, le DB_noub ! disons que là je suis VRAIMENT mal barré, et que une fois de plus ; je demande votre aide ! ! j’ai essayer de tout remodifier dans mon code afin de créer un sous-formulaire et appliquer la solution proposé par Macno, mais … je n’ai fait qu’empirer les choses !

    Alors, j’ai décider de revenir au point de départ de mon problème, ce qui est plus judicieux je pense.
    Donc, pour faire plus simple, j’ai décider de vous envoyer le code source de ma base, (table et formulaire). SVP, aidez moi, j’ai vraiment TOUT essayez TOUT SEUL, et là, je lève mon drapeau blanc, je suis vraiment dépasser !

    ****
    Entre DB_noub et DB_A... y'a un OCEAN!! (euhhhhh....)
    Fichiers attachés Fichiers attachés

  5. #5
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    après avoir vu ton code je pense qu'il faut faire simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub LISTEDATE_Click()
     
    Dim DateTemp As Date
    DateTemp = Me![LISTEDATE].Value
     
                      Me.Filter = "[DATE] = #" & Format(DateTemp, "mm\/dd\/yy") & "#"
     
                     Me.FilterOn = True
     
     End Sub
    J'ai testé et çà fonctionne sans sous-formulaire

    Une remarque importante. Il te faut absolument éviter de nommer des champs DATE. Car avec le VB il va parfois confondre date() qui est la date du jour et DATE qui sera ton champs, c'est vraiment une source d'erreur

  6. #6
    Candidat au Club
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut MercIIIIII,problème Résolu!
    Merci beaucoup Alexandre !!
    Tu me sauves la mise !
    En effet, tout marche nickel, et je vais ENFIN pourvoir avancer dans mon projet de stage
    Quoi qu'il en soit, je RETIENS ton conseil concernant la mauvaise utilisation du mot "DATE" pour nommer un champ de table; et surtout, grâce à toi j'ai compris un truc : les filtres sous access, c'est vachement pratique mais aussi hyper "délicat" à manipuler ! ( l'utilisation de la fonction "Format()"...) En tous cas, encore merci pour tout et VIVE développez.net!


    ****
    Entre DB_noub et DB_A... y'a un OCEAN!! (euhhhhh....)

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/04/2014, 16h19
  2. [MySQL] Afficher le résultat d'une sélection dans deux listes déroulantes d'un formulaire
    Par ritouthai dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/09/2013, 09h14
  3. Réponses: 2
    Dernier message: 24/04/2008, 11h28
  4. Réponses: 5
    Dernier message: 17/10/2007, 18h17
  5. Filtrer selon la sélection d'un menu déroulant
    Par Frollo dans le forum Access
    Réponses: 11
    Dernier message: 26/07/2006, 21h13

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