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

IHM Discussion :

Zone de liste dans une requete


Sujet :

IHM

  1. #1
    Membre régulier Avatar de Dr Byby'San
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2009
    Messages : 146
    Points : 115
    Points
    115
    Par défaut Zone de liste dans une requete
    Bonjour,

    J'ai créé un formulaire sous Access ou il y a une zone de liste (choix multiple) me présentant 10 villes. Ca c'est ok.
    Je souhaiterais utiliser la sélection des villes dans une de mes requêtes pour faire du filtrage (pour ne prendre que les lignes où le numéro correspondant à la ville soit dans la liste sélectionnée). Et là je sais pas comment récupérer les valeur sélectionnées, ni les utiliser dans cette requête de filtre.

    Merci !

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Cela se passera obligatoirement par du code.

    1) récupérer les valeurs sélectionnées dans la liste en créant une chaine de caractères par concaténation des valeurs récupérées
    2) Créer la chaine SQL correspondant à la requête à exécuter et inclure la chaine précédemment générée dans la clause WHERE en utilisant l'opérateur IN(Chaine de critères)

    Bonne continuation
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  3. #3
    Membre régulier Avatar de Dr Byby'San
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2009
    Messages : 146
    Points : 115
    Points
    115
    Par défaut
    Comment fait on pour récupérer les valeur sélectionnées ?

  4. #4
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Voilà un petit exemple pour récupérer les valeurs sélectionnées et en même temps après récupération supprimer la sélection

    Bonne continuation
    Fichiers attachés Fichiers attachés
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  5. #5
    Membre régulier Avatar de Dr Byby'San
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2009
    Messages : 146
    Points : 115
    Points
    115
    Par défaut
    Ok ...
    Je récupère donc mes valeurs sélectionnées.
    Je souhaiterais maintenant faire une requête de filtre sur une base en ne gardant que les enregistrements qui contiennent ma sélection.

    Dans ton exemple, j'ai choisi deux types de films/livres. Et je souhaiterais maintenant fabriquer une requête qui me permettrait d'afficher que les films/livres qui sont dans mes catégories choisies (aventure, policier, ...)

    Une idée ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 283
    Points : 11 742
    Points
    11 742
    Par défaut
    Hello !

    Tu as deux approches :

    1) l'approche "SQL encapsulé dans VB" : à la suite de la procédure de Jeannot, tu fais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strSelection = replace(strSelection, "'", "''") ' on double les apostrophes
    strSelection = replace(strSelection, ";", "', '") ' on est encadre chaque élément par des apostrophes
    SQL = "SELECT... FROM ... WHERE Genre IN ('" & strSelection & "') ;"
    Ensuite tout dépend de ce que tu veux faire avec ta requête...

    2) l'approche "indépendance entre VB et SQL"

    Dans ce cas, je réécris ainsi la macro de Jeannot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DoCmd.RunSQL "CREATE TABLE Sel (Genre VARCHAR(50)) ;"
    ' Boucle sur tous les éléments sélectionnés dans la liste
    For Each varSelectGenre In lstGenre.ItemsSelected
        DoCmd.RunSQL "INSERT INTO Sel(Genre) VALUES ('" & lstGenre.ItemData(varSelectGenre) & "') ;"
    Next varSelectGenre
    Ensuite, tu fais ta requête en jointurant une table avec les genres sur Sel... que tu détruiras après... ça dépend un peu si ta base est censée avoir des utilisateurs concurrents ou pas ?
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  7. #7
    Membre régulier Avatar de Dr Byby'San
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2009
    Messages : 146
    Points : 115
    Points
    115
    Par défaut
    Yes !
    J'ai réussi grâce à vous !

    Merki !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Critère d'une zone de liste dans une requête
    Par electrosat03 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 13/10/2011, 21h42
  2. Réponses: 2
    Dernier message: 14/07/2009, 08h45
  3. Réponses: 17
    Dernier message: 08/08/2008, 20h13
  4. [OpenOffice][Tableur] Zone de liste dans une cellule
    Par figarojuju dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 28/05/2008, 21h48
  5. zones de liste dans une table
    Par Willygramme dans le forum VBA Access
    Réponses: 12
    Dernier message: 20/08/2007, 10h38

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