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 :

Requête paramétrée avec paramètre comportant une condition


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 25
    Points : 9
    Points
    9
    Par défaut Requête paramétrée avec paramètre comportant une condition
    Bonjour à tous,

    J'utilise une requête paramétrée qui récupère comme paramètre le contenu d'une zone de texte dans un formulaire.

    Avec ce paramètre, je voudrais filtrer plusieurs valeurs à la fois. Par exemple, pour filtrer les valeurs 101 et 102, j'ai écris dans ma zone de texte : "101 Ou 102", mais quand je lance la requête, elle ne renvoie aucun résultat.

    J'aurais pu passer les valeurs une par une (par exemple : [Param1] Ou [Param2]), mais je n'ai jamais le même nombre de valeurs à filtrer.

    Je voudrais donc savoir s'il est possible de filtrer plusieurs valeurs à la fois sans utiliser le vba, et si non en l'utilisant.

    Merci d'avance.

  2. #2
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    a tu essayé
    "101"et"102"

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Renardo Voir le message
    a tu essayé
    "101"et"102"
    Non, ça ne marche pas.

    Je pense que le problème vient du fait qu'Access interprète le paramètre que je lui passe comme une chaîne de caractère et non pas comme 2 valeurs.

    En fait, il comprend "101 Ou 102" au lieu de "101" Ou "102".

    Est-ce qu'il y a un moyen de spécifier qu'il s'agit d'un tri sur plusieurs valeurs, ou doit-on lui passer les valeurs une par une ?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 226
    Points : 261
    Points
    261
    Par défaut
    si le champ qui reçoit le paramètre est de type Texte, tu peux essayer

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    sur la ligne des critères de la requête :
    in (101;102) pour des valeurs
    in ("101";"102") pour du texte

  6. #6
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    "'101' Or '102'"
    Pas plus de résultat


    in (101;102) pour des valeurs
    in ("101";"102") pour du texte
    Si j'écris ça, ma requête ne me renvoie que les enregistrements qui comprennent les valeurs 101 et 102 ; or je peux être amené à filtrer des enregistrements qui comportent d'autres valeurs, donc ça ne vas pas.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    En fait, à quoi te sert ta requête ?

    Si c'est une requête pure et dure, je ne vois pas.

    Si c'est la source d'un autre formulaire, la solution serait de passer par un OpenForm avec clause Where (sur click de bouton, par exemple) de forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "FormulaireListe", , , "(([Champ_à_filter] in (" & Me.MaSelection & ")))"
    en sachant que :
    - "FormulaireListe" est le formulaire que tu vas ouvrir avec les enregistrements filtrés,
    - "Champ_à_filtrer", c'est évident, non !
    - "MaSelection" doit contenir des valeurs séparées par une virgule et, s'il s'agit de texte, encadrées de guillemets.

    Si c'est pour un état, la syntaxe de OpenReport est quasi identique.

    Bon courage !

  8. #8
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Ma requête paramétrée est une requête création de table, donc les méthodes openform ou openreport ne s'appliquent pas dans mon cas.

    Sinon, j'ai aussi essayé le bout de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Set qdf = CurrentDb.QueryDefs("R_Suivi_Preventifs_critiques")
        With qdf
            .Parameters("test") = "101"
            .Parameters("test") = "102"
            .Execute
        End With
    Mais seul le second paramètre (102) est pris en compte.

    Autre solution, je peux formuler le passage de paramètres dans ma requête de la façon suivante :

    [Param 1] ou [Param 2] ou ... [Param n]

    mais ce n'est pas vraiment de cette façon que je voudrais le faire...

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Bonjour,


    Code :

    Set qdf = CurrentDb.QueryDefs("R_Suivi_Preventifs_critiques")
    With qdf
    .Parameters("test") = "101"
    .Parameters("test") = "102"
    .Execute
    End With


    Mais seul le second paramètre (102) est pris en compte.
    Logique, la deuxième initialisation écrase la première. Au mieux, il aurait fallu les concaténer avec le séparateur ou opérateur adéquat.
    Personnellement, je n'ai pas réussi à passer plusieurs valeurs à un seul paramètre. C'est pour ça que je persiste sur le IN qui permet de tester n valeurs en une seule fois.
    Et comme ça, sur le vif, je ne vois pas d'autre solution que le code !
    Mais as-tu réellement besoin de créer une nouvelle table ?

  10. #10
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    le IN qui permet de tester n valeurs en une seule fois
    mais il ne permet pas de passer un nombre différent de valeurs à chaque fois, or c'est exactement ce que je veux faire.


    je ne vois pas d'autre solution que le code !
    c'est également mon avis

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Personnellement, je ne passerais pas par un paramètre de requête mais par un formulaire ou une boîte de saisie pour entrer les valeurs à tester, afin d'obtenir une seule chaîne de x valeurs.

    L'intérêt c'est qu'en passant par du code, il te sera plus simple d'inclure UNE chaîne (formatée comme il faut) dans un IN que de tester combien de valeurs sont demandées, pour construire la clause Where qui va bien, avec les OR et les parenthèses nécessaires.

    Mais, bon ! C'est mon avis à moi, qui n'engage que moi !
    Regardes comment sont traduites en SQL ces différentes conditions et vois ce qui te convient le mieux.

    Allez, courage, tu vas y arriver !

Discussions similaires

  1. Requête paramétrée avec choix par une liste déroulante [AC2010]
    Par Nono32 dans le forum Requêtes et SQL.
    Réponses: 18
    Dernier message: 10/06/2015, 13h49
  2. [Dojo] Requête AJAX avec paramètre avec DOJO
    Par Tavarez59 dans le forum Bibliothèques & Frameworks
    Réponses: 10
    Dernier message: 19/06/2009, 13h50
  3. [reporting services]pb de requête MDX avec paramètre date
    Par lamyae_84 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/06/2007, 17h57
  4. Réponses: 1
    Dernier message: 03/12/2006, 16h13
  5. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33

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