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 :

Baser une zone de liste sur le contenu (colonne complète) d'une autre zone de liste [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Baser une zone de liste sur le contenu (colonne complète) d'une autre zone de liste
    Bonjour le forum,

    Je débute en SQL (bon OK, j’ai commencé hier pour les besoins de mon stage) et je n’arrive pas à faire ce que j’aimerai.

    J’ai une première Zone de liste soumise à la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ZOLAffiche.RowSource = "SELECT T_Chantier.IDChantier, T_Chantier.Client, T_Tache.Type, T_Tache.Materiel, T_Tache.Etat, FROM T_Chantier, T_Tache WHERE ((T_Chantier.IDChantier) = (T_Client.Chantier)) AND ((T_Chantier.Client) = [Formulaires]![F_GestionClient]![TXTIDClient])) ORDER BY T_ Tache.Etat, T_ Tache.Type"
    En dessous j’ai une deuxième Zone de liste soumise à la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ZOLAfficheMateriel.RowSource = "SELECT T_TypeOutil.IDTypeOutil, T_Outil.NomOutil AS Nom, T_Outil.IDOutil, T_VersionOutil.IDVersion, T_VersionOutil.Version FROM T_VersionOutil, T_Outil, T_TypeOutil WHERE (T_TypeOutil.IDTypeOutil = T_Outil.TypeOutil) AND (T_Outil.IDOutil = T_VersionOutil.Outil) ORDER BY T_TypeOutil.IDTypeOutil"
    Ces 2 requêtes fonctionnent très bien.

    Ce que je n’arrive pas à faire c’est afficher uniquement dans la 2è liste le nom des outils utilisés (référence ZOLAffiche : T_Tache.Materiel) sur les chantiers du client sélectionné sur le formulaire F_GestionClient.

    J’ai essayé d’ajouter des trucs comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INNER JOIN T_Tache ON T_VersionOutil.IDVersion =" & Me. ZOLAffiche.column(4) & "
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE T_VersionOutil.IDVersion = " & Me.ZOLAffiche.column(4) & "
    Sous diverses syntaxes… mais ça n’affiche rien (pas d’erreur Access cependant).
    Ma colonne Materiel est pourtant remplie correctement.

    Je pense que je me heurte plutôt à un blocage de fond : les requêtes SQL manipulent des champs et moi je lui dis de traiter des valeurs de liste... Non ?

    J’ai aussi fait des recherches sur le net, mais ça n’a pas été très concluant > tout ce que je trouve ne se base que sur une valeur (ex. sélection liste déroulante), alors que j’ai besoin de filtrer sur tout le contenu de la colonne.

    Avez-vous des conseils/idées ?

    Merci d’avance

  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 : 78
    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,

    Je pense que je me heurte plutôt à un blocage de fond : les requêtes SQL manipulent des champs et moi je lui dis de traiter des valeurs de liste... Non ?
    Vois l’exemple joint.
    La propriété « Contenu » de la zone de liste dépendante fait référence au contenu de la zone de liste principale, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [tVINS].[DENOMINATION] FROM tVINS WHERE ((([tVINS].[APPELLATION]) Like "*" & Formulaires!Exemple!cboAppellation & "*"));
    Quand l’utilisateur choisit un item de la principale, il faut réactualiser la dépendante, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Compare Database
    Option Explicit
     
    Private Sub cboAppellation_AfterUpdate()
      'Reinitialiser la liste dépendante
      Me.cboDenomination = Null
      Me.cboDenomination.Requery
      'Dérouler la liste dépendante
      DoCmd.GoToControl "cboDenomination"
      Me.cboDenomination.Dropdown
    End Sub
    Fichiers attachés Fichiers attachés
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre à l'essai
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 41
    Points : 23
    Points
    23
    Par défaut
    Merci Claude !

    Je comprend mieux comment tout celà s'articule.

    Par contre ce n'est pas exactement ce que je veux faire.
    Ma Liste 1 me sert en fait à afficher le résultat d'une requête, construite sur plusieurs tables, puis filtrée selon plusieurs critères. On peut alors agir sur les champs de cette liste par plusieurs contrôles.

    Ce que je voudrai c'est réccupérer la totalité du contenu d'un certain champ/colonne (Materiel) de cette liste filtrée, supprimer les doublons et afficher dans Ma Liste 2 le détail des différents "Materiel" intervenant dans ce qui est affiché Liste 1.

    Je ne sais pas si c'est vraiment plus clair...
    N'hésitez pas à me poser des questions.

    Je suis en train de creuser une piste avec des RecordSet...

  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 : 78
    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 sais pas si c'est vraiment plus clair...
    Heu... pas pour moi.

    Si tu veux garnir la BdD (Access2000 !) en annexe avec un exemple concret, je pourrais peut-être t'aider...
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Membre à l'essai
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 41
    Points : 23
    Points
    23
    Par défaut C'est bon... OU PRESQUE !!! :)
    J'ai fait un objet "Requête Sélection" parametrée sous Access (2010).

    1°)
    L'utilisateur sélectionne un client dans une Zone de liste -déroulante- (et l'IDClient en colonne cachée).
    1°bis)
    La requête s'exécute à partir de l'IDClient, pour sortir tous les chantiers de ce client. ; et pour chaque IDchantier : son type, son avancement, la référence du pack matériel utilisé.
    A savoir : IDClient, IDChantier, Type, Etat, Materiel
    2°)
    La Zone de liste 1 -non déroulante- donne les infos sur les chantiers du client.
    A savoir : IDChantier, Type, Etat
    (on peut ensuite changer l'Etat par clic simple ou double clic)
    3°)
    La Zone de liste 2 -non déroulante- donne les infos sur tous les packs matériel utilisés sur les chantiers commandés par ce client.
    A savoir : Materiel, TypeOutil, Nom, ...

    Le problème était que le champ Materiel contenait plusieurs enregistrements différents (dont des redondances), et que je voulais afficher le descriptif de chacun dans ma Zone de liste 2.

    Je m'en suis sortie avec une Sous-Requête
    (oui, je ne savais pas que ça existait... mais on ne peut pas tout apprendre en 4 jour hein )
    J'ai ajouté dans mon WHERE le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND (T_VersionOutil.IDVersion IN (SELECT DISTINCT Materiel FROM R_BilanClient))
    Ca marche bien... SAUF ! que quand je fais appel à ma requête, il me demande de rentrer l'IDClient à la main...
    NOTE : Le "remplissage" des listes se fait dans l'AfterUpdate de la liste déroulante où se fait le choix du client (ZOLAffiche).

    En fait je ne sais pas quoi mettre pour que ça prenne en compte la sélection dans le WHERE de R_BilanClient : [Formulaires]![F_GestionClient]![ZOLAffiche].[???]

  6. #6
    Membre à l'essai
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Tête de linotte
    Je suis vraiment distraite !
    La solution était sous mes yeux ! Et je l'ai étudiée hier soir...

    Merci Claude !!! Encore une fois j'avance grâce à vous !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/02/2014, 11h13
  2. Réponses: 0
    Dernier message: 16/02/2014, 22h30
  3. Select sur nom de colonne récupéré par une requête
    Par epistole dans le forum Développement
    Réponses: 4
    Dernier message: 26/04/2013, 17h22
  4. Réponses: 5
    Dernier message: 29/08/2012, 13h37
  5. Réponses: 7
    Dernier message: 06/06/2008, 22h16

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