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

Requêtes et SQL. Discussion :

Listes déroulantes dépendantes


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Listes déroulantes dépendantes
    Bonjour tout le monde,

    J'ai cherché un message correspondant à mon problème mais n'en ai pas trouvé. J'espère ne pas faire de doublon.

    Je travaille sur access 2000 pour construire une base de données.

    J'ai créé des formulaires dans lesquels sont plusieurs listes déroulantes. Ces formulaires ont en fait pour but de comparer les enregistrements d'une table en fonction de critères, qui sont ces listes déroulantes.
    Un bouton permet d'ouvrir un état basé sur une requête. Cette requête est elle même basée sur les valeurs choisies dans les listes déroulantes du formulaire.
    Par exemple, l'utilisateur choisit dans les listes déroulantes une enseigne, un pays, et une gamme de produit. Il aura un état répertoriant tous les produits correspondants.

    Jusqu'à maintenant, j'avais réussi à faire ces requêtes. Lorsque rien n'était choisi dans une ou plusieurs des listes déroulantes, tous les enregistrements étaient sélectionnés.
    Mon problème venait du fait que les contenus des listes déroulantes ne dépendaient pas les uns des autres.
    Grâce à ce site, j'ai pu résoudre ce problème avec le post "Comment faire en sorte que le contenu d'une zone de liste déroulante dépende de la valeur d'une autre liste ?"
    Mais maintenant, je suis obligée de sélectionner un enregistrement dans mes listes déroulantes.

    Comment puis je faire dépendre les contenus des listes les uns des autres tout en laissant la possibilité à l'utilisateur de choisir tous les enregistrements, en ne sélectionnant rien dans les listes déroulantes par exemple?

    Je tiens juste à préciser que je n'ai aucune notion en VBA. Je sais juste très bien faire des copiers collers

    Je termine mon stage dans une semaine et suis donc un petit peu stressée, j'espère que vous pourrez m'aider!

    Bonne journée,
    Ondine

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Je sais juste très bien faire des copiers collers
    C'est déjà une grande qualité :-).

    Peux-tu poster le SQL de ta requête de sélection pour confirmation mais voici ce que je te sugère :

    mettre comme critère :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    like """" & (iif(isnull([Forms]![NomTonForm]![NomTonChampCritere]);"*"; [Forms]![NomTonForm]![NomTonChampCritere]) & """"

    Cela sélectionnera tous les enregistrements si tu ne reseigne rien et seulement ceux qui répondent à un critère si tu le saisie.

    Autre solution : faire une requête UNION dans ta liste de sélection et ajouter 'Tous' comme critère.

    Quelque chose comme

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select [TaTable].[tonCritere] as [Critere],[TaTable].[TonLibelle] as Libelle from [TaTable]
    union
    select SELECT "*" AS Critere, "-Tous" AS Libelle
    order by [Libelle]

    et comme critère :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    Like """" & [Forms]![NomTonForm]![NomTonChampCritere] & """"

    A+

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour ton aide!

    Alors ma requête est composée de plusieurs sous requêtes dont le nombre dépend du nombre de critères.

    Je prend l'exemple du formulaire "Consulter les enseignes" dans lequel il y a 3 listes déroulantes: le type d'enseigne, le nom de l'enseigne et le service proposé par l'enseigne.
    A la base ces tables sont reliées comme ça:
    Type d'enseigne (ID type enseigne, nom) --- Enseigne (ID type enseigne, ID enseigne, nom) --- Service enseigne (ID service, ID enseigne) -- Service (ID service, nom)

    Je voudrais que la liste déroulante nom de l'enseige dépende des deux autres.

    Ma requête est composée de 3 sous requêtes:
    - Consulter enseignes a :
    SELECT Enseigne.ID_enseigne, Enseigne.nom_enseigne, Enseigne.ref_type_enseigne
    FROM Enseigne
    WHERE (((Enseigne.ref_type_enseigne) Like [Formulaires]![Consulter les enseignes]![Modifiable13] & "*"));

    -Consulter enseignes b:
    SELECT Service.ID_service, Service.nom_service
    FROM Service
    WHERE (((Service.ID_service) Like [Formulaires]![Consulter les enseignes]![Modifiable15] & "*"));

    - Consulter enseignes c:
    SELECT [Consulter enseignes a].ID_enseigne, [Consulter enseignes a].nom_enseigne, [Consulter enseignes b].ID_service, [Consulter enseignes b].nom_service
    FROM ([Consulter enseignes a] INNER JOIN [Service Enseigne] ON [Consulter enseignes a].ID_enseigne = [Service Enseigne].ref_enseigne) INNER JOIN [Consulter enseignes b] ON [Service Enseigne].ref_service = [Consulter enseignes b].ID_service;

    Je met donc la requete Consulter enseignes c en contenu de la liste déroulante nom de l'enseigne.

    Et je met les procédures événementielles indiquées dans le post du haut dans l'événement sur changement des listes déroulantes service et type d'enseigne.

    La dernière fois que j'ai fait ça, ça ne fonctionnait pas. Là ça a l'air, ce qui m'étonne.. Qu'est ce que tu en penses?

    J'ai essayé ce que tu m'as conseillé (avec la première fonction sql) mais la résultat de la troisième requête est vide alors que je souhaiterais que tous les enregistrements soient sélectionnés... je ne sais pas pourquoi car j'ai l'impression que le code sql que tu m'as donné convient...

    Merci de ton aide, encore!
    Ondine

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Re bonjour,

    Je viens de réaliser une de mes erreurs:
    J'ai mis une fonction LIKE [le champ] &"*" dans les ID. Donc j'obtiens en résultat de requete tous les enregistrements ayant un chiffe en commun comme les ID 2, 20, 21 par exemple. (ils n'ont bien sur rien à voir)

    Donc soit je met ça dans le nom... mais ça ne me parait pas être une bonne idée. ou j'arrive à faire ce que tu m'as dit... help ^^

    Bonne journée,
    Ondine

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Si tu travailles avec les ID il ne faut pas mettre & "*" sinon tu obtient ce que tu as décrit

    Je reposte ici ma solution qui va marcher aussi pour les ID.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIKE """" & (iif(isnull([Forms]![NomTonForm]![NomTonChampCritere]);"*"; [Forms]![NomTonForm]![NomTonChampCritere]) & """"
    iif(isnull([Forms]![NomTonForm]![NomTonChampCritere]); Teste si le champ est null
    "*"; si le champ est null permet d'avoir tous les éléments
    [Forms]![NomTonForm]![NomTonChampCritere]) si le champ est renseigné permet d'avoir seulement l'élément désiré.

    A+

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    oui effectivement ça a l'air de marcher! je revérifie ça demain.

    Merci beaucoup pour ton aide
    Bonne soirée,
    Ondine

Discussions similaires

  1. Zone de liste déroulante dépendante et sous-formulaire
    Par Philosophine dans le forum Access
    Réponses: 6
    Dernier message: 24/10/2006, 22h41
  2. Réponses: 2
    Dernier message: 15/09/2006, 19h03
  3. Réponses: 3
    Dernier message: 30/06/2006, 22h56
  4. Réponses: 4
    Dernier message: 17/03/2006, 14h39
  5. Liste déroulante dépendante
    Par nanas dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/02/2005, 15h25

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