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 :

Requête de sélection depuis un formulaire [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Requête de sélection depuis un formulaire
    Bonjour à tous !

    j'ai une table _CATALOGUE (avec case à cocher dans plusieurs champs)ainsi qu'un formulaire F_BrancheAnnee avec liste déroulante et case à cocher. (voir les images ci-jointes)

    J'aimerai que ma requête R_BrancheAnnee sélectionne dans ma table _CATALOGUE les informations que je sélectionne dans mon formulaire soit une liste déroulante (ça c'est ok ça fonctionne) et les cases à cochers coresspondant à celle de ma table _CATALOGUE . Ma requête fonctionne seulement si mon enregistrement contient un seule des champs avec une case à coché vrai . Cependant, j'ai plusieurs enregistrement avec plusieurs case à cochers vrai. j'aimerai savoir comment faire pour que si je sélectione une des case à cocher dans mon formulaire, ma requête me renvoi quand même l'enregistrement.

    Voici ma requête en SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [_Catalogue].[N° SAP], [_Catalogue].Titre, [_Catalogue].Branche, [_Catalogue].[1eH], [_Catalogue].[2eH], [_Catalogue].[3eH], [_Catalogue].[4eH], [_Catalogue].[5eH], [_Catalogue].[6eH], [_Catalogue].[7eH], [_Catalogue].[8eH], [_Catalogue].[9eH], [_Catalogue].[10eH], [_Catalogue].[11eH], [_Catalogue].Degré, [_Catalogue].Edition, [_Catalogue].[Etat dans la bibliothèque], [_Catalogue].Emplacement
    FROM _Catalogue
    WHERE ((([_Catalogue].Branche)=Forms!F_BrancheAnnee!cmbBranche) And ((([_Catalogue].[4eH])=Forms!F_BrancheAnnee!Cocher4)=True) And ((([_Catalogue].[5eH])=Forms!F_BrancheAnnee!Cocher5)=True) And ((([_Catalogue].[6eH])=Forms!F_BrancheAnnee!Cocher6)=True) And ((([_Catalogue].[7eH])=Forms!F_BrancheAnnee!Cocher7)=True) And ((([_Catalogue].[8eH])=Forms!F_BrancheAnnee!Cocher8)=True) And ((([_Catalogue].[9eH])=Forms!F_BrancheAnnee!Cocher9)=True) And ((([_Catalogue].[10eH])=Forms!F_BrancheAnnee!Cocher10)=True) And ((([_Catalogue].[11eH])=Forms!F_BrancheAnnee!Cocher11)=True) And ((([_Catalogue].[2eH])=Forms!F_BrancheAnnee!cocher2)=True) And ((([_Catalogue].[3eH])=Forms!F_BrancheAnnee!Cocher3)=True) And ((([_Catalogue].[1eH])=Forms!F_BrancheAnnee!cocher1)=True));

    Merci d'avance
    Images attachées Images attachées   

  2. #2
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bonjour.
    La condition Where doit comparer les champs Oui/Non de la table aux cases à cocher du formulaire. Or, comme c'est formulé dans la requête, le champ de la table est comparé à la fois au formulaire et à l'état "True"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [_Catalogue].[4eH])=Forms!F_BrancheAnnee!Cocher4)=True
    Ainsi formulé, cela veut dire que [CODE][_Catalogue].[4eH]) doit être = à l'état (True ou False) de la case à cocher4 dans le formulaire ET = True. Ce = True annule donc la comparaison à l'état de la case à cocher dans le formulaire.
    Difficile à dire en français de manière claire!!!
    Essaie donc d'enlever tous ces =True
    Cordialement

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse mais ça marche toujours pas

    Peut-être que je me suis aussi mal expliquée..
    Alors voici expliquer en un peu près français..

    Voilà.. J'ai une table nommée _Catalogue celle-ci contient les informations concernant du matériel scolaire. Dans celle-ci il y a plusieurs champs dont 11 cases à cocher (qui corresponde aux années d'école, c'est pourquoi dans un enregistrement il peut y avoir plusieurs cases à cocher valides (par ex. le même livre peut être utiliser plusieurs années).
    J'ai un formulaire nommé F_Annee avec 11 cases à cocher qui corresponde à mes 11 champs de ma table
    Ce que j'aimerai faire c'est que quand dans mon formulaire je coche la case 1, ma requête affiche tous les articles avec la case 1 active de ma table.
    J'ai cru réussir mais ma requête me renvoyais à chaque fois que ceux qui ont qu'une seule case active dans l'enregistrement. Ex. si je choisit d'afficher les articles qui ont la case 1 active, celle-ci ne me montrera pas les articles avec les autres années actives (ex 1, 2, 3, 4)

    je sais pas si c'est à peine plus compréhensible..

    dans l'image form, c'est le résultat que j'obtient lorsque actuellement je sélectionne la case 1
    dans l'image base, on voit ce que cela devrait sortir, j'ai fait un filtre dans le formulaire..

    Merci d'avance
    Images attachées Images attachées   

  4. #4
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Donc, tu dois utiliser des Or et pas des And
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE [_Catalogue].Branche)=Forms!F_BrancheAnnee!cmbBranche And (([_Catalogue].[4eH])=Forms!F_BrancheAnnee!Cocher4) Or (([_Catalogue].[5eH])=Forms!F_BrancheAnnee!Cocher5) Or ...
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ([_Catalogue].Branche=Forms!F_BrancheAnnee!cmbBranche And [_Catalogue].[4eH]=Forms!F_BrancheAnnee!Cocher4) Or ([_Catalogue].Branche=Forms!F_BrancheAnnee!cmbBranche And [_Catalogue].[5eH]=Forms!F_BrancheAnnee!Cocher5) Or ...
    Puisque ce que tu veux comme résultat, c'est tous les enregistrements où (la branche = la branche choisie et la case4eH est sur Vrai quand la case4 du formulaire est sur Vrai) ou bien (la branche = la branche choisie et la case5eH est sur Vrai quand la case5 du formulaire est sur Vrai) ou bien ... si j'ai bien compris.
    Ce qui, quand je regarde tes captures d'écran, correspond à 11 possibilités (11 cases à cocher). Et, sauf erreur de ma part, ce n'est pas possible dans une requête en mode création (9 lignes disponibles pour les critères). Et ce, pour autant que tu ne veuilles trouver de correspondance qu'avec une seule case cochée dans le formulaire.
    C'est pourquoi, en réfléchissant, je crois que tu devrais partir dans une autre direction :
    - au départ, on choisit un élément de la liste et le formulaire affiche les éléments qui correspondent à la branche choisie
    - ensuite, à chaque fois qu'une case est cochée, on applique un filtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Cocher4_AfterUpdate()
    Me.Filter = "4eH= True"
    Me.FilterOn = True
    End Sub
    Il y a sans doute d'autres façons de faire, mais ça me semble une solution assez facile à mettre en place.
    R.L.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci pour tes réponses !
    Cependant, quand j'essaie avec OR au lieu de AND ça fontionne pas, je pense que c'est parce que j'ai trop de "contrainte".

    De plus, quand j'essaie avec le code pour filtrer ça ne marche pas non plus.. Car j'ai le formulaire F_Annee où il y a les cases à cocher et le sous formulaire F_RequeteAnnee où j'ai le résultat de ma requete que j'ai inséréer dans le formulaire F_Annee

    Je pense que le filtre ne marche pas car je veux filtrer un sous-formulaire depuis un formulaire.

    Est-ce qu'il y a un code différent pour ça ?

    Merci d'avance

  6. #6
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bonjour.
    Oui, il y a une syntaxe particulière pour faire référence à un sous formulaire à partir d'une procédure déclenchée dans le formulaire principal.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Cocher4_AfterUpdate()
    Forms![Nom du formulaire principal]![Nom du contrôle Sous-formulaire].Form.Filter = "4eH= True"
    Forms![Nom du formulaire principal]![Nom du contrôle Sous-formulaire].Form.FilterOn = True 
    End Sub
    Attention d'utiliser le nom du contrôle sous-formulaire (qui n'est pas nécessairement le même que son nom en tant que formulaire!). Pour vérifier ce nom, tu ouvre le form principal en mode création, tu clique sur le carré gris en haut à gauche du sous-form, et tu vois son nom dans les propriétés (type de sélection : sous-formulaire).
    Cordialement.

  7. #7
    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


    Regarde du coté des tutos, il y a des infos sur les recherches multicritères qui peuvent répondre à tes questions

    Bonne lecture

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par RobiPMS Voir le message
    Bonjour.
    Oui, il y a une syntaxe particulière pour faire référence à un sous formulaire à partir d'une procédure déclenchée dans le formulaire principal.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Cocher4_AfterUpdate()
    Forms![Nom du formulaire principal]![Nom du contrôle Sous-formulaire].Form.Filter = "4eH= True"
    Forms![Nom du formulaire principal]![Nom du contrôle Sous-formulaire].Form.FilterOn = True 
    End Sub
    Attention d'utiliser le nom du contrôle sous-formulaire (qui n'est pas nécessairement le même que son nom en tant que formulaire!). Pour vérifier ce nom, tu ouvre le form principal en mode création, tu clique sur le carré gris en haut à gauche du sous-form, et tu vois son nom dans les propriétés (type de sélection : sous-formulaire).
    Cordialement.
    Merci !! ça fonctionne !

    Si jamais la syntaxe correcte est celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Private Sub Cocher4_AfterUpdate()
    Forms![Nom du formulaire principal]![Nom du contrôle Sous-formulaire].Form.Filter = "([4eH] = True)"
    Forms![Nom du formulaire principal]![Nom du contrôle Sous-formulaire].Form.FilterOn = True 
    End Sub
    Bonne soirée !

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

Discussions similaires

  1. sélection requête depuis un formulaire
    Par rose0729 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 15/11/2012, 15h42
  2. Réponses: 2
    Dernier message: 27/06/2008, 16h57
  3. [SQL] Élaborer une requête de sélection en fonction d'un formulaire
    Par encore_php dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/02/2008, 08h10
  4. Réponses: 3
    Dernier message: 22/12/2007, 14h06
  5. Réponses: 4
    Dernier message: 24/04/2007, 16h45

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