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 :

commande "Filter"


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 97
    Par défaut commande "Filter"
    Salut à tous,

    J'ai crée un rapport et quand on l'ouvre, il y a un petit formulaire de filtrage qui s'ouvre ce qui permet de filtrer le rapport selon les données qu'on veut voir. Le problème, c'est que je n'arrive pas à comprendre pourquoi ça ne marche pas car j'ai identifié toutes mes variables, or chaque fois que je clique sur le bouton "Set filter" (Appliquer filtre), ca me ramène au module de débogage.

    Voici mon code:

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Option Compare Database
     
    Private Sub Set_Filter_Click()
    Dim strSQL As String, intCounter As Integer
     
    '   Build SQL String.
        For intCounter = 1 To 5
            If Me("Filter" & intCounter) <> "" Then
                 strSQL = strSQL & "[" & Me("Filter" & intCounter).Tag & "] " & " = " & Chr(34) & Me("Filter" & intCounter) & Chr(34) & " And "
            End If
        Next
     
        If strSQL <> "" Then
            ' strip Last " And ".
            strSQL = Left(strSQL, (Len(strSQL) - 5))
     
            ' Set the Filter property
            Reports![RptBy2].Filter = strSQL
            Reports![RptBy2].FilterOn = True
        Else
            Reports![RptBy2].FilterOn = False
        End If
    End Sub
     
     
    Private Sub Clear_Click()
        Dim intCounter As Integer
        For intCounter = 1 To 5
            Me("Filter" & intCounter) = ""
        Next
    End Sub
     
    Private Sub Close_Click()
        DoCmd.Close acForm, Me.Form.Name
    End Sub
     
    Private Sub Form_Close()
        DoCmd.Close acReport, "RptBy2" 'Close the BY report.
        DoCmd.Restore 'Restore the window size
    End Sub
     
    Private Sub Form_Open(Cancel As Integer)
        DoCmd.OpenReport "RptBy2", A_PREVIEW  'Open BY report.
        DoCmd.Maximize 'Maximize the report window
    End Sub
    Dans le débogueur, le message en jaune est le suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If Me("Filter" & intCounter) <> "" Then
    Je ne sais donc pas ou ca peut être le problème.

    vautour29

  2. #2
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    peut-être essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Me("Filter" & CStr(intCounter)) <> "" Then

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 97
    Par défaut
    Ça ne marche toujours pas car dans le débogueur, le message reste en jaune et quand je retourne au rapport, il y a le même message "Microsoft Access ne peut pas trouver le champ 'Filter1' référé dans l'expression"

    Or je n'ai pas de champ nommé 'Filter1'... et je en vois pas pourquoi ca poserait un problème..

    Merci

    vautour29

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Bonsoir,

    Avec cette expression VBA, tu demandes à Access de rechercher dans le formulaire s'il existe un contrôle nommé "Filter1" ou, à défaut, un champ sous-jacent au formulaire qui porterait ce même nom.

    Apparemment, il n'y a ni contrôle ni champ nommé "Filter1"...
    Donc, tu t'es trompé quelque part .

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 97
    Par défaut
    Salut VBO,

    Mais "Filter" est le nom de la commande, en aucun cas un nom d'un champ. Je l'ai même changé pour le champ "NomPersonne", mais ca ne fonctionne pas non plus

    vautour29

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Vois-tu, tout ceci n'est pas très clair pour moi .

    Qu'appelles-tu "commande" ?
    Un contrôle de type [bouton de commande], peut-être ?

    Merci de préciser.

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