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 :

Filtrer le formulaire principal en fonction d'une valeur d'un sous formulaire [AC-2007]


Sujet :

IHM

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur (improvisé) de base de données
    Inscrit en
    Décembre 2014
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur (improvisé) de base de données
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2014
    Messages : 103
    Points : 73
    Points
    73
    Par défaut Filtrer le formulaire principal en fonction d'une valeur d'un sous formulaire
    Bonjour les cracks.

    Je simplifie mon problème :
    J'ai des caisses et des types de fruits. Une caisse peut contenir plusieurs types de fruit et un type de fruit peut être présent dans plusieurs caisses.
    J'ai donc une table T_caisse, une T_fruit et une relation plusieurs-plusieurs classique, avec une table de jonction TJ_fruit_dans_caisse.
    J'ai ensuite un formulaire principal F_caisse avec dedans un sous-formulaire (en mode continu) SF_fruit_dans_caisse.

    Ce que je voudrais, c'est mettre dans le formulaire principal, celui des caisses, une liste déroulante indépendante qui recense tous les types de fruit (ça c'est facile) et que, lorsqu'on choisit un fruit, il filtre les caisses pour ne présenter que celles dont le sous-formulaire contient un enregistrement avec le fruit demandé.

    J'espère avoir été assez clair.

    Merci de votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Voici un exemple.

    Pour le principe appliqué, regarde ce tuto : http://claudeleloup.developpez.com/t...-multicritere/

    La particularité ici, c'est la présence de 2 tables => la source du formulaire fCaisses devient


  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur (improvisé) de base de données
    Inscrit en
    Décembre 2014
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur (improvisé) de base de données
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2014
    Messages : 103
    Points : 73
    Points
    73
    Par défaut
    Merci beaucoup, c'est exactement ce que je cherche... à un petit détail près :
    J'ai ajouté quelques caisses pour tester ton exemple. J'en ai mis aussi une vide. Je me suis rendu compte que celle-ci n'apparaissait plus par la suite, ce qui est embêtant parce qu'une caisse vide, c'est quand même une caisse qui existe, on peut par exemple la remplir ultérieurement.
    Comment faire ?

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Comme ceci
    rCaisses =>




    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tCaisses.Caisse, tCaissesFruits.tCaissesFK, tCaissesFruits.tFruitsFK
    FROM tCaisses LEFT JOIN tCaissesFruits ON tCaisses.tCaissesPK = tCaissesFruits.tCaissesFK
    WHERE (((tCaissesFruits.tFruitsFK) Like IIf(IsNull([Formulaires]![fCaisses]![FiltreFruits]),"*","*" & [Formulaires]![fCaisses]![FiltreFruits] & "*"))) OR (((tCaisses.Caisse) Like IIf(IsNull([Formulaires]![fCaisses]![FiltreFruits]),"*")));

    Et la source de fCaisses =>




    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT tCaisses.* FROM tCaisses WHERE (((tCaisses.Caisse) In (SELECT rCaisses.Caisse FROM rCaisses;)));

  5. #5
    Membre régulier
    Homme Profil pro
    Administrateur (improvisé) de base de données
    Inscrit en
    Décembre 2014
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur (improvisé) de base de données
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2014
    Messages : 103
    Points : 73
    Points
    73
    Par défaut
    Merci beaucoup. Effectivement, une caisse vide peut maintenant apparaître... mais le filtre ne fonctionne plus !

    Désolé de vous embêter avec ça, je ne maîtrise pas l'utilisation des "critères" et "ou" dans les requêtes...

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    C'est moi qui te dois des excuses !

    J'avais posté une mauvaise version.

    Cette fois, c'est la bonne.
    Fichiers attachés Fichiers attachés

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    je ne maîtrise pas l'utilisation des "critères" et "ou" dans les requêtes...


    D’abord, remarque que les critères sont chacun sur une ligne différente => les éléments qui répondent au 1er et les éléments qui répondent au 2nd seront donc sélectionnés.
    En d’autres mots, on prend si 1 OU 2 est satisfait.

    Que dit 1 ?


    Si le filtre est Null => on aura : Comme "*", ce qui revient à dire à Access : « ramène tous les enregistrements quel que soit la valeur de tFruitsFK dans la table tCaissesFruits.
    Par contre si le filtre n’est pas Null => on aura : Comme "*" & LaValeurDuFiltre & "*", ce qui revient à dire : « ramène seulement les enregistrements dans lesquels tFruitsFK contient le filtre » .

    Que dit 2 ?



    Si le filtre est Null : « ramène toutes les caisses » (y compris celles qui sont vides).

  8. #8
    Membre régulier
    Homme Profil pro
    Administrateur (improvisé) de base de données
    Inscrit en
    Décembre 2014
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur (improvisé) de base de données
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2014
    Messages : 103
    Points : 73
    Points
    73
    Par défaut
    Un grand merci pour tes efforts pédagogiques... qui ne sont pas vains !
    Je commence un peu à entrevoir le fonctionnement des cases "critère" et "ou" dans une requête : si je ne me trompe pas, elle se donnent pour but de présenter de manière plus lisible le paramètre WHERE d'une instruction SQL, non ? Mes compétences s'arrêtent alors là puisque je suis loin de bien maîtriser ce fameux paramètre WHERE, pourtant si indispensable. Par exemple, je ne comprends pas le fonctionnement de "Comme" (Like) ou "Dans" (In). Mais c'est le lot de tout autodidacte.

    Sinon, la dernière version fonctionne parfaitement, sauf que j'ai dû enlever les "*" qui encadraient le critère Sinon de TFruitsFK parce que cela renvoyait plus de résultats que voulu.

    Encore merci

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

Discussions similaires

  1. [AC-2007] Sous-formulaire variable en fonction d'une liste déroulante
    Par carlito0205 dans le forum IHM
    Réponses: 9
    Dernier message: 05/07/2011, 09h30
  2. Réponses: 2
    Dernier message: 02/06/2010, 08h11
  3. Réponses: 2
    Dernier message: 02/04/2007, 18h41
  4. Réponses: 3
    Dernier message: 01/02/2007, 12h08
  5. Récupérer une valeur d'un sous formulaire
    Par Mariboo dans le forum Access
    Réponses: 7
    Dernier message: 23/05/2006, 11h13

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