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 :

Listbox et Sélections multiples


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Par défaut Listbox et Sélections multiples
    Bonjour à tous,

    Je viens à vous car je reste coincé sur quelque chose qui est basique, mais que je ne sais traiter que par une affreusement lourde méthode de concatenations.

    Ainsi, j'ai une tables avec pas mal de champs (clé primaire, date, type de produit, soustype de produit, quantité, etc.)

    Je voudrais permettre à l'utilisateur d'afficher les enregistrements de la table avec certaines conditions sur la plupart de ces champs.

    Plus précisément, je lui laisse entrer l'intervalle de temps qu'il souhaite regarder (DateMin et DateMax), ce qui ne pose pas de problème particulier pour coder ma requête en SQL dans VBA (simple double condition dans le WHERE de ma requête).

    Mais je lui laisse aussi sélectionner dans une listbox les produits et sous-produits qu'il souhaite voir spécifiquement (les produits et sous-produits sont bien affichés dans la listbox (ils sont issus d'une simple requête dans la table en question, pour bien donner toutes les possibilités), et j'exporte les produits que l'utilisateur sélectionne dans une table temporaire -est-ce bien nécessaire?).


    Là où je coince, c'est dans la modification de la requête écrite en VBA.

    En effet, là où ça ne me posait aucun problème pour les dates (une condition pour dire supérieur ou égal à telle date, et une condition pour dire inférieur ou égal à telle date) est un très gros problème quand l'utilisateur peut sélectionner 10 produits et 30 sous-produits différents.

    Cela ne DEVRAIT pas être un problème, mais vu que je n'arrive pas à me servir correction des conditions "OR", ma requête finit avec un WHERE qui a beaucoup trop de conditions.

    Je m'en suis sorti (c'est un grand mot!) avec une boucle qui parcourt les choix de l'utilisateur et qui concatenate à chaque fois "Or ((a.produit)=(produitX))"

    Ce qui fait un horrible WHERE du genre:
    WHERE (((a.produit)=(produit1) Or (a.produit)=(produit2) Or (a.produit)=(produit12) Or (a.produit)=(produit16)) AND (a.sousproduit)=(sousproduit1) Or (a.sousproduit)=(sousproduit4)....)

    Quelle est la "belle" façon pour que ma requête aille directement chercher les données de ma listBox (du genre (a.produit)=lstProduits.Selected) sans avoir à sortir une méthode affreuse comme la mienne?

    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Par défaut
    Hum, je croyais que cela m'aiderait...
    http://www.developpez.net/forums/sho...hlight=listbox
    http://cafeine.developpez.com/access...echerchemulti/

    Mais j'ai toujours mon problème de sélections multiples dans les différentes listbox...

    A moins qu'il n'y ait pas d'autre méthode plus nette?

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Par défaut
    bonjour,

    pour avoir la liste des items sélectionnés, vous pouvez passer par la collection ItemsSelected de votre listbox. Voir aide d'Access

    Pour votre requête vous pouvez utiliser le prédicat IN :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE a.produit in ("produit1","produit2",...)
    Voir aide d'Access pour ce prédicat

    cordialement

    philippe

  4. #4
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Par défaut
    Merci, c'est déjà beaucoup plus propre.
    Je vérifie tout de suite.

    Mais ne peut-on pas faire encore "mieux"?

  5. #5
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Par défaut
    Bonsoir,

    Après implémentation, c'est toujours lourd (requête de bien 500 caractères) mais ça fait beaucoup plus net et ça marche bien.

    Si néanmoins vous avez une méthode plus efficace encore, n'hésitez pas

    Merci encore Philippe!

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

Discussions similaires

  1. Boucler pour effacer des lignes dans une listbox à sélection multiple
    Par simond1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/08/2008, 22h25
  2. Initialisation ListBox à sélections multiples
    Par vincentdu33 dans le forum C#
    Réponses: 1
    Dernier message: 26/07/2007, 09h54
  3. Réponses: 7
    Dernier message: 16/03/2007, 13h33
  4. [ListBox] Récupérer sélection multiple ?
    Par Kylen dans le forum ASP.NET
    Réponses: 4
    Dernier message: 29/06/2006, 14h57
  5. [Débutant] Sélection multiples dans une Listbox
    Par eraim dans le forum Access
    Réponses: 4
    Dernier message: 15/10/2005, 03h21

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