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 en cascade dans tous les sens


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Mai 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Listes en cascade dans tous les sens
    Bonjour le forum,

    pour exposer mon problème, je dois expliquer le fonctionnement de ma table. J'ai une table structurée de la façon suivante :

    Critère 1 Critère 2 Critère 3
    Crit 1 - Item 1
    Crit 2 - Item 1
    Crit 3 - Item 1
    Crit 1 - Item 1 Crit 2 - Item 1
    Crit 3 - Item 2
    Crit 1 - Item 1
    Crit 2 - Item 1
    Crit 3 - Item 3
    Crit 1 - Item 1 Crit 2 - Item 2
    Crit 3 - Item 1
    Crit 1 - Item 1
    Crit 2 - Item 2
    Crit 3 - Item 3
    Crit 1 - Item 2
    Crit 2 - Item 1
    Crit 3 - Item 1
    Crit 1 - Item 2
    Crit 2 - Item 1
    Crit 3 - Item 2
    Crit 1 - Item 2 Crit 2 - Item 1
    Crit 3 - Item 3
    Crit 1 - Item 2
    Crit 2 - Item 3 Crit 3 - Item 2
    Crit 1 - Item 2
    Crit 2 - Item 3 Crit 3 - Item 3
    Crit 1 - Item 3
    Crit 2 - Item 1 Crit 3 - Item 1
    Crit 1 - Item 3 Crit 2 - Item 1 Crit 3 - Item 2
    Crit 1 - Item 3 Crit 2 - Item 2
    Crit 3 - Item 2
    Crit 1 - Item 3 Crit 2 - Item 2
    Crit 3 - Item 3
    Crit 1 - Item 3 Crit 2 - Item 3 Crit 3 - Item 1
    Crit 1 - Item 3 Crit 2 - Item 3 Crit 3 - Item 3

    Je tente de créer un formulaire de sélection de listes en cascades "dans tous les sens". J'arrive à faire des listes en cascades classiques, c'est à dire en sélectionnant un item de Critère 1, puis un item de Critère 2 en fonction du Critère 1 sélectionné, etc. jusqu'au dernier critère, mais ce que j'aimerais, c'est que l'utilisateur puisse sélectionner (ou filtrer) uniquement à l'aide des critères qu'il veut (pas forcément tous), et dans l'ordre qu'il veut.

    C'est à dire que s'il commence par sélectionner Crit 2 - Item 2, la liste déroulante de Crit 1 n'affichera plus que les Items 1 et 3.

    J'espère que mon exposé est assez clair, et d'avance merci pour votre aide

    D'avance, merci pour votre aide !

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Bonjour.

    Si je te suis bien, tu veux que la dependance entre listes depende de l'ordre dans lequel choisi ses listes ?

    1. Donc il commence par L2=> L1 et L3 ne presentent que les resultats qui correspondent a L2
    2. Il continue par L1 => L3 ne presentent que les resultats qui correspondent a L2 et L1.


    C'est ca ?

    A+

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Mai 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Bonjour marot_r

    en fait, il fait dans l'ordre qu'il veut, à tout moment. Mon exemple était juste pour expliciter un résultat attendu.
    D'ailleurs, dans mon tableau exemple, je n'ai pas précisé, mais il peut y avoir des vides (indistinctement vbNullString et Null)

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Mai 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Re le forum,

    j'ai un peu avancé mais je bloque sur un truc. Voici mon code SQL du contenu du ComboBox (dans mon formulaire) associé au champ parent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT tbl_Table.[ChampParent]
    FROM tbl_Table
    WHERE (((tbl_Table.[ChampEnfant]) Like IIf(IsNull([Formulaires]![frm_LeForm]![cbo_Enfant]),"*","*" & [Formulaires]![frm_LeForm]![cbo_Enfant])))
    GROUP BY tbl_Table.[ChampParent];
    Je ne comprends pourquoi la liste de mon champ parent est erronée. Il manque deux items, ceux qui n'ont pas de précision en champ enfant (dans la table).

    J'ai essayé avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT tbl_Table.[ChampParent]
    FROM tbl_Table
    WHERE (((tbl_Table.[ChampEnfant]) Like Nz([Formulaires]![frm_LeForm]![cbo_Enfant],"*")))
    GROUP BY tbl_Table.[ChampParent];
    Mais ça ne marche pas mieux. J'ai toujours les même deux items manquants.

    Quelqu'un aurait une idée ?
    D'avance, merci

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Bonjour.

    Tu peux un peu simplifier le test car une chaîne et un null donne ... une chaîne !

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE tbl_Table.[ChampEnfant] Like "*" & [Formulaires]![frm_LeForm]![cbo_Enfant]

    Et ce que cela dit c'est que tu veux tous les enregistrements dont le champ enfant fini par ta sélection.

    À part cela qu'est-ce qui caractérisent tes éléments manquants ?

    Une façon de tester cela est de mettre des champs calcules qui affichent le critère et le résultat du critère de sélection et de supprimer le critère lui-même.

    Donc tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "*" & [Formulaires]![frm_LeForm]![cbo_Enfant] as MonCritere, tbl_Table.[ChampEnfant] Like "*" & [Formulaires]![frm_LeForm]![cbo_Enfant] as MonTest
    Tu vas pouvoir voir ce que voit vraiment Access et comment il l’interprète.

    A+

Discussions similaires

  1. lecture d'une plage dans tous les sens
    Par didier.schmit dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 05/04/2009, 09h04
  2. Liste de fichiers dans tous les sous dossiers
    Par TaleMaker dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/12/2008, 18h29

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