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

Bases de données Delphi Discussion :

Comment affiner ma sélection via des DBLookUpComboBox


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Points : 89
    Points
    89
    Par défaut Comment affiner ma sélection via des DBLookUpComboBox
    Bonjour à tous,

    J'aimerais beaucoup ajouter à mon programme la possibilité d'affiner une recherche d'un salarié :

    L'utilisateur peut choisir : Le lieu, le service, et enfin le salarié en question.

    Je me demandais s'il était possible d'afficher dans ma DBLookUpComboBox concernant les salariés, uniquement ceux étant dans le lieu et/ou le service choisi.
    Sachant que l'utilisateur n'est pas obligé de sélectionner le lieu et le service.

    Sa doit être faisable via une TQuerry, mais je n'en utilise pas pour l'instant et je ne comprend pas vraiment comment retourner le résultat d'une TQuerry.

    Voilà Voilà!

  2. #2
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    c'est très simple.
    tous d'abord vous devez disposé d'une table Lieu.
    Vous placez votre DbLookupComboBox sans lui indiqué le Datasoure ou le Datafield , uniquement le ListSource,ListField et le KeyField.
    et vous accompagnés chaque DbLookupComboBox avec un checkBox.


    et vous créer Votre Procédure ConstruirFiltre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Procedure ConstruireFiltre;
       Var IsFirst : Boolean;
     begin
       MyQuery.Close;
       MyQuery.SQL.Clear;
       MyQuery.SQL.ADD('SELECT * FROM MaTable');
      IsFirst := True;
    if CheckLieu.Checked Then //vous testé si l'utilisateur veut affiné la recherche par le lieux
       begin      
         if IsFrist Then
           begin 
              MyQuery.SQL.ADD(' WHERE (MonChampLieux = :Lieux')
              IsFirst := False;
           end  
           else
           MyQuery.SQL.ADD(' AND (MonChampLieux = :Lieux');
           MyQuery.ParamByName('Lieux').Value := MaListeLieu.KeyValue; 
       end;
         // ainsi de suite
         // ... pour les autres criteres.
     
      // Vous pouvez même ajouter un radio group pour le Tri
       Case RadioTriGroup.ItemIndex of
          0 : MyQuery.SQL.ADD(' ORDER BY Champ1');
          1 : MyQuery.SQL.ADD(' ORDER BY Champ1');
        end;
           MyQuery.Open;
      end;

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Points : 89
    Points
    89
    Par défaut
    Ok je crois avoir compris le système après une (trop) longue analyse. :p

    Par contre j'ai un problème, quand vous faites appel à :Lieu, les deux points devant signifient bien que c'est un params qui a été ajouté non?

    Je ne peut pas ajouter de Params à ma Query et je ne comprend pas pourquoi. =/

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Cela dépend des compos que tu utilises !

    Essaye comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      MyQuery.Parameters.ParamByName('Lieux').Value := ...
    @+

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Points : 89
    Points
    89
    Par défaut
    Ok je crois avoir compris le problème,

    Site et Service sont deux entités :

    Site : Site_ID, Site_Nom
    Service : Serv_ID, Serv_Nom

    Et Heberger est l'association entre les deux entités, permettant de savoir quel Service appartient à quel site :

    Heberger : Site_ID, Serv_ID.

    Donc pour bien filtrer les informations de ma DBLookupComboBox concertant les Service du Site choisi par l'utilisateur, il faut que je fasse... Hum c'est là que je suis perdu :'(

    Désolé mais j'ai vraiment du mal avec les Querry. =/

    Merci pour vos réponses.

    PS: Si vous avez un lien vers un Tuto pour les Query, je suis preneur! =D

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    La requête qui alimente ton ComboBox devrait ressemblé à ceci:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      select 
        SI.SITE_ID, SI.SITE_NOM, SE.SERV_ID, SE.SERV_NOM
      from 
        (SITE SI inner join HEBERGEUR H on SI.SITE_ID = H.SITE_ID)
        inner join SERVICE SE on H.SERV_ID = SE.SERV_ID)
      where 
        S.SITE_ID = :SITE_ID;

    @+ Claudius

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Points : 89
    Points
    89
    Par défaut
    Oki merci beaucoup! ))

    Par contre maintenant, pour alimenter ma DBLookupComboBox de cette requête, j'ai fait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm2.CheckBox1Click(Sender: TObject);
    begin
    DM1.Query1.Close;
    DM1.Query1.ParamByName('Site_ID').Value := DBLookupComboBox3.KeyValue;
    DM1.Query1.Open;
    end;
    Est-ce juste? Car sa me plante tout mon programme, Delphi y compris. =/

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/04/2011, 14h04
  2. Comment Modifier un membre via des Process
    Par Krishna dans le forum Général Python
    Réponses: 7
    Dernier message: 24/07/2010, 14h35
  3. Réponses: 5
    Dernier message: 08/06/2010, 15h45
  4. Comment afficher la sélection d'un menu au-dessus des boites adjacentes?
    Par LouisMartinQC dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 12/09/2009, 22h30
  5. Réponses: 1
    Dernier message: 10/06/2007, 07h22

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