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 :

Alimentation d'une zone de liste déroulante [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut Alimentation d'une zone de liste déroulante
    Bonjour, je voudrais alimenter une zone de liste déroulante via une requete.

    J'ai en fait une table Demande de travaux, et dans cette table demande de travaux j'ai des enregistrements avec la ligne de production, la machine... sur lesquelles la demande porte.

    Se que je cherche à faire, c'est à récupérer dans une liste déroulante les lignes de production qui apparaissaissent dans ma table demande de travaux, mais en les groupant.

    Voici ce que je fait en mode requete : Voir exemple

    Voici ce que j'obtiens en sql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT tbl_DemandeDeTravaux.Id_Ligne, tbl_Ligne.Ligne
    FROM tbl_Ligne INNER JOIN tbl_DemandeDeTravaux ON tbl_Ligne.Id_Ligne = tbl_DemandeDeTravaux.Id_Ligne
    GROUP BY tbl_DemandeDeTravaux.Id_Ligne, tbl_Ligne.Ligne, tbl_DemandeDeTravaux.Id_Etat
    HAVING (((tbl_DemandeDeTravaux.Id_Etat)=5 Or (tbl_DemandeDeTravaux.Id_Etat)=6 Or (tbl_DemandeDeTravaux.Id_Etat)=8 Or (tbl_DemandeDeTravaux.Id_Etat)=9));
    Et voila ce [B][U]que j'obtiens dans ma liste déroulante après alimentation avec la requete : Ligne 1
    Ligne 1
    Ligne 1
    Ligne 2
    Ligne 2
    Ligne 3
    Ligne 3
    Ligne 3
    Ligne 3

    Alors que moi je veux obtenir : Ligne 1
    Ligne 2
    Ligne 3
    Images attachées Images attachées  

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    Dans ton code SQL tu fait référence dans le select et Group BY à tbl_DemandeDeTravaux.Id_Ligne ce qui multiplie d'autant les lignes.

    Essaye avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT tbl_Ligne.Ligne
    FROM tbl_Ligne INNER JOIN tbl_DemandeDeTravaux ON tbl_Ligne.Id_Ligne = tbl_DemandeDeTravaux.Id_Ligne
    GROUP BY tbl_Ligne.Ligne, tbl_DemandeDeTravaux.Id_Etat
    HAVING (((tbl_DemandeDeTravaux.Id_Etat)=5 Or (tbl_DemandeDeTravaux.Id_Etat)=6 Or (tbl_DemandeDeTravaux.Id_Etat)=8 Or (tbl_DemandeDeTravaux.Id_Etat)=9));
    Edit : En gros tu supprimes dans ta requète le champ Id_ligne de la table tbl_DemandeDeTravaux

  3. #3
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Re, ce que j'ai oublié de préciser, c'est que je vais avoir besoins de récuperer ID_Ligne ensuite, donc il faut qu'il soit en colonne 0 de ma zone de liste.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re

    Donc il faut que tu prennes ID_Ligne dans la table tbl_Ligne
    ce qui donnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT tbl_Ligne.Id_Ligne,tbl_Ligne.Ligne
    FROM tbl_Ligne INNER JOIN tbl_DemandeDeTravaux ON tbl_Ligne.Id_Ligne = tbl_DemandeDeTravaux.Id_Ligne
    GROUP BY tbl_Ligne.Id_Ligne,tbl_Ligne.Ligne
    HAVING (((tbl_DemandeDeTravaux.Id_Etat)=5 Or (tbl_DemandeDeTravaux.Id_Etat)=6 Or (tbl_DemandeDeTravaux.Id_Etat)=8 Or (tbl_DemandeDeTravaux.Id_Etat)=9));
    J'avais pas vu : pour le champ tbl_DemandeDeTravaux à la place de regroupement il faut que tu prennes

  5. #5
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Merci bien

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/06/2020, 12h44
  2. Réponses: 6
    Dernier message: 31/03/2006, 11h04
  3. Réponses: 8
    Dernier message: 24/02/2006, 09h59
  4. Réponses: 1
    Dernier message: 19/01/2006, 17h54
  5. Réponses: 4
    Dernier message: 29/10/2005, 18h03

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