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

Delphi Discussion :

Comment afficher plusieures lignes dans une DBComboBox?


Sujet :

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 afficher plusieures lignes dans une DBComboBox?
    Bonjour à tous!

    J'ai un petit problème avec mes DBComboBox, je n'arrive pas à afficher plus d'une ligne lorsque je fait le lien avec ma BDD!

    Le lien avec ma BDD marche, j'ai mon premier Salarié dans la DBComboBox, mais lorsque je compile et que je teste ma ComboBox, elle n'affiche que la première ligne et pas le reste des salariés, comment faire?

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 115
    Points : 129
    Points
    129
    Par défaut
    Salut

    Si c'est un DBComboBox simple, il te faut gérer toi même le remplissage : la partie "DB" du composant ne rempli pas la liste déroulante mais synchronise l'élément sélectionné.

    Si tu veux que le contenu de la liste soit rempli par une requête :
    - soit tu rempli toi même,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while not eof do
    begin
      maCombo.items.add(fieldByName('CHAMP').AsString);
      next;
    end;
    - Soit tu utilise un DBLookupComboBox qui contient les propriétés ListSource, ListField, KeyField pour le remplissage automatique

    JP
    JP

    N'ayez pas peur de la perfection, vous ne l'atteindrez jamais !
    Salvador Dali

  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
    Merci pour ces infos JPB!

    Pour ce qui est de le remplir moi-même, qu'est-ce que le "FieldByName"? Delphi ne le reconnais pas. =/

    PS: De toute façon j'ai tester la LookUpComboBox sa marche du tonerre! Merci beaucoup. =D

  4. #4
    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
    J'en profite pour demander un p'tit truc supplémentaire :

    J'ai trois DBLookupComboBox et j'aimerais réduire les possibilités de choix de ces box petit à petit, affiner la sélection. Exemple :

    Première Box : Lieu.
    Deuxième Box : Service.
    Troisième Box : Salarié.

    J'aimerais que si l'utilisateur choisi un Lieu et Service, il n'apparaisse dans Box Salarié, QUE les salariés de ce Lieu/Service.

    Comment faire...?

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 115
    Points : 129
    Points
    129
    Par défaut
    Citation Envoyé par CleeM
    Pour ce qui est de le remplir moi-même, qu'est-ce que le "FieldByName"? Delphi ne le reconnais pas.
    C'est une fonction qui vient du TDataset qui rempli ta combo, tout comme Eof, Next ... En fait le vrai code c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with MonDataset do //
    begin
      while not eof do
      begin
        maCombo.items.add(fieldByName('CHAMP').AsString);
        next;
      end;
    end;
    Regarde l'aide de FieldByName de TDataset (classe ancêtre de tous les composants d'accès aux données quelque soit le moteur). C'est une des fonctions que j'utilise le plus en BDD

    JP
    JP

    N'ayez pas peur de la perfection, vous ne l'atteindrez jamais !
    Salvador Dali

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 115
    Points : 129
    Points
    129
    Par défaut
    Citation Envoyé par CleeM
    J'en profite pour demander un p'tit truc supplémentaire :

    J'ai trois DBLookupComboBox et j'aimerais réduire les possibilités de choix de ces box petit à petit, affiner la sélection. Exemple :

    Première Box : Lieu.
    Deuxième Box : Service.
    Troisième Box : Salarié.

    J'aimerais que si l'utilisateur choisi un Lieu et Service, il n'apparaisse dans Box Salarié, QUE les salariés de ce Lieu/Service.

    Comment faire...?
    Voyons voir ...
    çà dépend un peu de quelle BDD tu utilises, quels composants pour remplir ...

    Si c'est des requêtes, tu peux mettre des paramètres du style "where lieu = :LIEU" et tu relances ta requête avec un ParamByName('LIEU').value dans le OnChange de la combo Lieu.
    Tu peux aussi décider d'ouvrir tous les services d'un coup en ramenant le lieu, et de filtrer le dataset avec le lieu sélectionné (propriété filter, ou OnFilterRecord) ... ou bien par un lien DataSource (regarde la propriété datasource de ton Dataset).
    Ou de remplir la combo à la main en filtrant au fur et à mesure ...

    Le choix est encore vaste ...
    JP

    N'ayez pas peur de la perfection, vous ne l'atteindrez jamais !
    Salvador Dali

  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
    Merci beaucoup JPB!

    Pour l'affinage du choix de l'utilisateur, je n'utilise pas de requêtes (j'utilise des LookupComboBox qui sont super utile en fait^^).
    Pour le Dataset, j'ai regardé l'option Filter du DataSet de mon DataSource, et lorsque je met un champ de ma table, il me dit : "Expression filtre formée incorrectement". =/

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/07/2014, 23h11
  2. [Débutant] comment afficher plusieurs images dans une interface
    Par zakary dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 02/05/2009, 10h47
  3. [Débutant] comment afficher plusieurs images dans une seule interface ?
    Par youssa81 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 06/02/2009, 00h36
  4. Comment recuperer plusieurs lignes dans une requete ?
    Par davebarns dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/05/2008, 18h58
  5. Comment afficher plusieurs elements dans une meme alert()
    Par monphp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/05/2007, 22h46

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