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 :

Filtrage sur pièce jointe


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Juillet 2017
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur environnement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 97
    Par défaut Filtrage sur pièce jointe
    Bonjour à tous !

    Actuellement je bloque sur un point dans ma base de données.

    J'ai un formulaire de recherche et je souhaiterais filtrer sur la présence ou non de pièce jointe, sauf que je ne vois absolument pas comment faire. Actuellement je procède avec deux requete, une avec et une avec ou sans piece jointe, mais pour les état ça fait donc aussi 2 fois plus d'état etc etc alors qu'il me serait plus simple de simplement créer une checkbox par exemple avec pièce jointe ou sans pièce jointe.

    Je vous mets mon code, histoire de voir de où partir :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    f = "" 'définir la fonction f qui va permettre de filtrer'
    If Not IsNull(Me.filtredépartement) And Me.filtredépartement <> "" Then 'Premier critère. Pour adapter le code, copier coller et changer les noms
        If f <> "" Then
            f = f & " OR no_Département = " & Me.filtredépartement 'Ici il s'agit d'un critère par liste déroulante. OR au lieu de AND pour filtrer sur plusieurs département
        Else
            f = "no_Département = " & Me.filtredépartement 'no_département correspond au champ du département
        End If
    End If
    If Not IsNull(Me.filtredépartement2) And Me.filtredépartement2 <> "" Then
        If f <> "" Then
            f = f & " OR no_Département = " & Me.filtredépartement2
        Else
            f = "no_Département = " & Me.filtredépartement2
        End If
    End If
    If Not IsNull(Me.filtredépartement3) And Me.filtredépartement3 <> "" Then
        If f <> "" Then
            f = f & " OR no_Département = " & Me.filtredépartement3
        Else
            f = "no_Département = " & Me.filtredépartement3
        End If
    End If
    If Not IsNull(Me.filtredépartement4) And Me.filtredépartement4 <> "" Then
        If f <> "" Then
            f = f & " OR no_Département = " & Me.filtredépartement4
        Else
            f = "no_Département = " & Me.filtredépartement4
        End If
    End If
    'Critère ci dessous pour la date, comprise entre filtreannée1 et filtreannée 2
    If Not IsNull(Me.filtreannée1) And Me.filtreannée1 <> "" And Not IsNull(Me.filtreannée2) And filtreannée2 <> "" Then
        If f <> "" Then
            f = f & " AND [Date] BETWEEN " & CLng(Me.filtreannée1) & " AND " & CLng(Me.filtreannée2) & ""
            Else
                f = "[Date] BETWEEN " & CLng(Me.filtreannée1) & " AND " & CLng(Me.filtreannée2) & "" 'Date correspond au champ date de la table t_références
        End If
    End If
    'Ci dessous même principe que la date
    If Not IsNull(Me.filtrecapacité1) And Me.filtrecapacité1 <> "" And Not IsNull(Me.filtrecapacité2) And Me.filtrecapacité2 <> "" Then
        If f <> "" Then
            f = f & " AND [Capacité hydraulique en EHhyd] BETWEEN " & CLng(Me.filtrecapacité1) & " AND " & CLng(Me.filtrecapacité2) & ""
        Else
            f = "[Capacité hydraulique en EHhyd] BETWEEN " & CLng(Me.filtrecapacité1) & " AND " & CLng(Me.filtrecapacité2) & ""
        End If
    End If
    'Critère par checkbox, qui marche comme pour la liste déroulante
    If Not IsNull(Me.checkbfiltre_domestiques) And Me.checkbfiltre_domestiques <> "" Then
        If f <> "" Then
            f = f & " AND [Eaux usées domestiques] = " & Me.checkbfiltre_domestiques
        Else
            f = "[Eaux usées domestiques] = " & Me.checkbfiltre_domestiques
        End If
    End If
     
    If Not IsNull(Me.checkbfiltre_agroalim) And Me.checkbfiltre_agroalim <> "" Then
        If f <> "" Then
            f = f & " AND [Effluents agro-alimentaires] = " & Me.checkbfiltre_agroalim
        Else
            f = "[Effluents agro-alimentaires] = " & Me.checkbfiltre_agroalim
        End If
    End If
     
    If Not IsNull(Me.checkbfiltre_boues) And Me.checkbfiltre_boues <> "" Then
        If f <> "" Then
            f = f & " AND [Boues / Matières de vidange] = " & Me.checkbfiltre_boues
        Else
            f = "[Boues / Matières de vidange] = " & Me.checkbfiltre_boues
        End If
    End If
     
    If Not IsNull(Me.checkbfiltre_lixiviats) And Me.checkbfiltre_lixiviats <> "" Then
        If f <> "" Then
            f = f & " AND [Lixiviats / Ruissellement] = " & Me.checkbfiltre_lixiviats
        Else
            f = "[Lixiviats / Ruissellement] = " & Me.checkbfiltre_lixiviats
        End If
    End If
     
    If Not IsNull(Me.filtremarché) And Me.filtremarché <> "" Then
        If f <> "" Then
            f = f & " AND [Marché] = """ & Me.filtremarché & """"
        Else
            f = "[Marché] = """ & Me.filtremarché & """"
        End If
    End If
    If Not IsNull(Me.filtrefiliere) And Me.filtrefiliere <> "" Then
        If f <> "" Then
            f = f & " AND [Filière] = """ & Me.filtrefiliere & """"
        Else
            f = "[Filière] = """ & Me.filtrefiliere & """"
        End If
    End If
    If Not IsNull(Me.filtremissiondet) And Me.filtremissiondet <> "" Then
        If f <> "" Then
            f = f & " AND [Mission détaillée] = """ & Me.filtremissiondet & """"
        Else
            f = "[Mission détaillée] = """ & Me.filtremissiondet & """"
        End If
    End If
    If Not IsNull(Me.filtremission) And Me.filtremission <> "" Then
        If f <> "" Then
            f = f & " AND [Mission] = """ & Me.filtremission & """"
        Else
            f = "[Mission] = """ & Me.filtremission & """"
        End If
    End If
     
    Me.Filter = f 'filter est la fonction filtre représenté par la lettre f
    Me.FilterOn = True 'activation du filtre
     
    End Sub
    Si vous avez des conseils à me donner je suis preneur ! Merci beaucoup
    J'ai déjà essayer mais il me dit que le champs de pièce jointe ne peux pas être utilisé dans une clause WHERE etc. Donc il n'y a rien dans le code qui fait référence a ma checkbox de pièce jointe actuellement.

  2. #2
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 966
    Par défaut
    J'ai déjà essayer mais il me dit que le champs de pièce jointe ne peux pas être utilisé dans une clause WHERE etc. Donc il n'y a rien dans le code qui fait référence a ma checkbox de pièce jointe actuellement.
    bonsoir,
    avec quelle version d'Access travailles-tu ?
    Cette syntaxe fonctionne en VBA avec 2013 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE Matable.MonChampPiecejointe.FileName Is Null

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Juillet 2017
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur environnement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 97
    Par défaut
    Bonjour ! Merci pour ta réponse je suis sous access 2016. Je ferais des tests cet aprèm mais à première vue il s'agit de sql, non ?

  4. #4
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 966
    Par défaut
    Bonsoir,
    oui c'est du SQL, mais pour un filtre, c'est pareil, il faut juste enlever le WHERE et tester si la checkbox pièce jointe est cochée ou non.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Juillet 2017
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur environnement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 97
    Par défaut
    Bonjour,

    alors je n'ai pas tout compris mais en essayant d'adapter sur le filename avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If Not IsNull(Me.checkbfiltre_certif) And Me.checkbfiltre_certif <> "" Then
        If f <> "" Then
            f = f & " AND [t_références.Certificat.FileName] = " & Me.checkbfiltre_certif
        Else
            f = "[t_références.Certificat.FileName] = " & Me.checkbfiltre_certif
        End If
    End If
    J'ai une erreur : "Type de données incompatible dans l'expression du critère"

    Je pense que j'ai mal fait mon code, mais la je bloque un peu...

  6. #6
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 966
    Par défaut
    bonsoir,
    cela dépend de ce que contient checkbfiltre_certif.
    Si tu veux les pièce jointes ou pas : comment fonctionne la sélection sur ton formulaire ?
    J'ai un formulaire de recherche et je souhaiterais filtrer sur la présence ou non de pièce jointe
    Précises si coché, c'est avec pièce jointe ou le contraire.

Discussions similaires

  1. problème débogage et question sur pièce jointe
    Par Lenovice54 dans le forum WinDev
    Réponses: 1
    Dernier message: 25/04/2017, 22h38
  2. pb sur pièce jointe "vide" avec CDO
    Par weyb06 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 03/03/2017, 18h41
  3. [2.x] filtrage sur tables jointes
    Par Quatre dans le forum Symfony
    Réponses: 0
    Dernier message: 11/03/2012, 22h10
  4. [AC-2003] boucle sur pièces jointes envoi mail
    Par novice06 dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/07/2010, 14h50

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