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 :

Méthode OpenReport et utilisation d'un filtre


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 52
    Par défaut Méthode OpenReport et utilisation d'un filtre
    Bonjour,

    Je veux sélectionner dans une zone de liste un certain nombre de valeurs (plus de 300 parfois en sélectionnant tout) puis ouvrir un état en fonction de ces valeurs, j'ai donc utilisé ce 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
    Dim VarI As Variant
    Dim StrInAct As String
     
    StrInAct = ""
     
    If Me.[Liste des connecteurs ICU].Selected(0) <> True Then
        For Each VarI In Me.[Liste des connecteurs ICU].ItemsSelected
            StrInAct = StrInAct & "'" & Me.[Liste des connecteurs ICU].Column(0, VarI) & "',"
        Next VarI
    End If
     
    If StrInAct <> "" Then
        StrInAct = Left(StrInAct, Len(StrInAct) - 1)
        DoCmd.OpenReport "Annexes ICU OM", acViewPreview, , "[Connecteur] in (" & StrInAct & ")"
     
    Else
        DoCmd.OpenReport "Annexes ICU OM"
    End If
    Le problème est que le filtre utilisé,

    "[Connecteur] in (" & StrInAct & ")"

    devient trop long si le nombre de valeurs est trop grand. Je suis donc passé par une table temporaire puis par l'utilisation d'une requête "image" de la table pour réalisé le filtre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DoCmd.RunSQL "DELETE FROM [TEMP_ICU] WHERE ([Connecteur]<>'');"
        DoCmd.RunSQL "INSERT INTO TEMP_ICU (Connecteur) SELECT Connecteur FROM [Traçabilité-Composants] WHERE [Connecteur] in (" & StrInAct & ") GROUP BY [Traçabilité-Composants].Connecteur"
    DoCmd.OpenReport "Annexes ICU OM", acViewPreview, "4-T-Liste des connecteurs choisis ICU OM"
    Malheuresement le tri ne marche pas et l'état s'ouvre pour tout les enregistrements sans compter la requête filtre. Il me parait un peu simple d'utiliser uniquement le nom de la requête sans identifier les champs à filtrer mais c'est ce que m'indique l'aide d'Access.

    Comment faire? S'agit il d'une erreur de syntaxe?

    Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 415
    Par défaut
    As-tu bien basé ton rapport sur TEMP_ICU la table temporaire qui contient tes données ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 52
    Par défaut
    Il y a des jours comme ça où on sent que l'on était très fatigué la veille...

    Effectivement je n'avais pas pensé à basé mon état sur une requête utilisant la table temporaire...

    Du coup pourrais tu m'indiquer pourquoi l'utilisation de l'argument filtre ne marche pas?

    En tout cas merci de m'avoir reveillé!

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 415
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Du coup pourrais tu m'indiquer pourquoi l'utilisation de l'argument filtre ne marche pas?
    Pour être honnète je ne me suis jamais servi d'un filtre nommé, j'utilise toujours le 4ième paramêtre où tu peux faire l'équivalent d'une clause Where donc je n'ai pas d'explication.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. [Filter Design Toolbox] Utilisation d'un filtre FIR
    Par doriphore dans le forum Signal
    Réponses: 3
    Dernier message: 11/03/2008, 18h14
  2. Réponses: 0
    Dernier message: 12/11/2007, 18h53
  3. Probleme avec la méthode OpenReport
    Par 4rn0_o dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/08/2007, 16h23
  4. Utilisation d'un filtre directement sur 'LEFT OUTER JOIN'
    Par lodan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/03/2007, 18h17
  5. méthode contains et utilisation
    Par kamos dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 01/11/2006, 22h53

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