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

Composants VCL Delphi Discussion :

recuperer les données d'une colonne de table dans un Combobox


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Points
    50
    Par défaut recuperer les données d'une colonne de table dans un Combobox
    Bonjour,
    Je veux récupérer les données d'une colonne de ma table dans un Combobox.
    Et dans mon code ci dessous, il ya des dysfonctionnement.
    Souvent il récupère les 2 première valeurs seulement (or il ya plusieurs valeurs) ou bien souvent il répète les mêmes valeurs plusieurs fois.

    Merci de m'aider à le corriger.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      for i := 0 to DataModule1.IBTable1.RecordCount -1 
        begin
      edit_interne.Combo1.items.add(DataModule1.IBTable1.fieldbyname('LIBELLE').asString);
        DataModule1.IBTable1.next;
        end;

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

    Ce n'est pas conseillé d'utiliser la propriété RecordCount car elle peut ne pas correspondre au nombre d'enregistrements de la table.

    Comme ceci, peut-être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var
      Fld: TField;
    begin
      with DataModule1.IBTable1 do
      begin
        Fld := FieldByName('LIBELLE');
        First;
        while not Eof do
        begin
          edit_interne.Combo1.Items.Add(Fld.AsString);
          Next;
        end;
      end;
    end;
    J'ai extirpé le FieldByName de la boucle while. Inutile de rechercher constamment le même champ, une fois suffit

    @+ Claudius.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Points : 81
    Points
    81
    Par défaut
    tu pourrais pas faire plutôt un truc du genre (le code n'est pas forcément bon, mais c'est l'idée):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DataModule1.IBTable1.first;//se placer sur le premier élément de la table
    //Itération sur chacun des éléments du tableau
    while not DataModule1.IBTable1.eof do
    begin
       edit_interne.Combo1.items.add(DataModule1.IBTable1.fieldbyname('LIBELLE').asString);
        DataModule1.IBTable1.next;
    end;
    parce que là avec ton index i et ton IBTable1.next j'ai l'impression que tu mélange les choux et les carottes? . en fait c'est quoi comme composant le ibTable1? c'est lié à un datasource?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Salut

    Ce n'est pas conseillé d'utiliser la propriété RecordCount car elle peut ne pas correspondre au nombre d'enregistrements de la table.

    Comme ceci, peut-être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var
      Fld: TField;
    begin
      with DataModule1.IBTable1 do
      begin
        Fld := FieldByName('LIBELLE');
        First;
        while not Eof do
        begin
          edit_interne.Combo1.Items.Add(Fld.AsString);
          Next;
        end;
      end;
    end;
    J'ai extirpé le FieldByName de la boucle while. Inutile de rechercher constamment le même champ, une fois suffit

    @+ Claudius.
    Ok je viens de voir qu'on a répondu en parallèle ;-) ça me rassure l'idée est la même

  5. #5
    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
    Citation Envoyé par Gwenou Voir le message
    en fait c'est quoi comme composant le ibTable1?
    IBTable est composant IBX (Interbase Express) fourni avec Delphi. C'est un DataSet de type TTable classique destiné à Interbase.

    Citation Envoyé par Gwenou Voir le message
    c'est lié à un datasource?
    Ca peut, bien entendu, comme tout descendant de TDataSet, mais ce n'est pas nécessaire dans le cas présent.

    @+

  6. #6
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Points
    50
    Par défaut
    Merci bien à vous! Mon problème est resolu.
    Je veux souvent cliquer sur resolu pour dire que mon probleme est resolu mais je cherche le bouton en vain . Je ne sais pas où se trouve le bouton?
    Si c'est le premier message je vois le bouton mais s'il ya eu des reponses je ne vois plus le bouton.

    Comment ça se passe?

  7. #7
    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
    Le bouton est situé juste en dessous du dernier message de la discussion.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Points : 81
    Points
    81
    Par défaut
    en bas à droite .. après le dernier message ... ARRGGRRR Cl@udius tu réponds trop vite !!!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/10/2010, 11h10
  2. Réponses: 3
    Dernier message: 22/08/2007, 12h12
  3. Réponses: 4
    Dernier message: 23/05/2007, 11h07
  4. Recuperer les données d'une base via JDBC
    Par gloglo dans le forum JDBC
    Réponses: 2
    Dernier message: 02/10/2006, 11h43
  5. Effacer toutes les données d'une colonne
    Par denisfavre dans le forum Access
    Réponses: 5
    Dernier message: 12/10/2005, 15h20

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