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

C++Builder Discussion :

Combo box et liste de valeurs contenues dans ma table


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 29
    Par défaut Combo box et liste de valeurs contenues dans ma table
    Bonjour à tous,

    Je souhaite faire une form qui contiendra tous les champs d'une table, pour consultation.
    Je voudrais, en haut de cette form, mettre un combo box permettant de choisir dans une liste de valeurs crées à partir des valeurs d'une table.
    Exemple. J'ai une form où je remplis des infos sur une personne. Nom, prenom, adresse.
    Je veux que dans une autre form, je puisse avoir d'affiché en premier, une combo avec la liste des noms presents dans la table. En selectionnant le nom, les autres champs se remplissent en fonction.
    Je précise qu'au niveau du code, je sais remplir une combo avec la liste des noms (en prenant champs après champ la valeur du nom)
    Mais ceci est très lent sur de gros fichiers.
    Une idée ?
    Merci !:

  2. #2
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    Salut, moi jutilise un dbLookUpComboBox!!
    voici comment je le rempli
    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
     
    void Vente::AfficheCompteClient(TFrmMain *FrmMain)
    {
    //Création d'un TQuery dynamiquement
    TQuery *qryCompteClient;
    qryCompteClient = new TQuery(NULL);
    qryCompteClient->DatabaseName = "Elphi";  //Elphi = Alias
     
    //########### REQUETE ############
    AnsiString req = "SELECT tblClient.NoClient, tblClient.NomClient, tblClient.PrenomClient, tblClient.NomClient & ', ' & tblClient.PrenomClient AS NomComplet FROM tblClient INNER JOIN tblFacture ON tblClient.NoClient = tblFacture.NoClient WHERE (((tblFacture.HrsFermetureFacture) Is Null))";  //Requête SQL
    qryCompteClient->SQL->Clear();  // Efface le contenu de la requête du composant
    qryCompteClient->SQL->Add(req);  // Affecte la requete voulue dans le composant
    qryCompteClient->Open();  //Effectue la requete -> Resultat envoyé dans le datasourc
     
    //Création d'un datasource dynamiquement
    TDataSource *dtsCompteClient;
    dtsCompteClient = new TDataSource(NULL);
    dtsCompteClient->DataSet = qryCompteClient;  //Lie le Tquery avec le dataset
    dtsCompteClient->Enabled = true;  //Active le DataSource
     
    FrmMain->dbLkCboVenteCompteClientCompte->ListSource = dtsCompteClient;
    FrmMain->dbLkCboVenteCompteClientCompte->ListField = "NomComplet";
    FrmMain->dbLkCboVenteCompteClientCompte->KeyField = "NoClient";
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 29
    Par défaut
    Uhmmm, j'ai envie de dire ... Parfait ?
    Merci bien !

  4. #4
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Avec des ComboBox classiques:
    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
    TADOQuery* QueryCB = new TADOQuery(Application);
     QueryCB->ConnectionString = Module->CONNECTSTR;
     
     //Remplissage ComboBox
     QueryCB->Close();
     QueryCB->SQL->Clear();
     QueryCB->SQL->Add("SELECT DISTINCT LIEU_NOM FROM LIEU;");
     QueryCB->Open();
     
     for (int i = 0;i < QueryCB->RecordCount ;i++)
     {
      CB_LieuL->Items->Add(QueryCB->FieldByName("LIEU_NOM")->Text);
      QueryCB->Next();
     }
     delete QueryCB;

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 29
    Par défaut
    Une petite pour la route :
    dans le premier exemple, comment faire en sorte que la combo soit remplie avec la valeur courante de la table ? (le nom)
    dans mon cas, le texte affiché dans le combo est vide, il faut selectionner une valeur à l'interieur du combo pour qu'effectivement le texte se mette à la bonne valeur.
    En fait, lors du lancement de la form, j'aimerai que le texte du combo soit la valeur courante de la table (par exemple qd on vient de rentrer un nouveau contact dans la table, qu'automatiquement la valeur du dbcombo nom soit le nom enregistré ?

  6. #6
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    si tu veux sélectionner automatiquement un item dans le dblookupcombox, faut utiliser ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dbLkCboProduitChoisir->KeyValue = "Choco123";
    "Choco123" est un item (keyfield) dans ma list!!
    bref, c'est chocolat qui est visible mais pour la sélection, ca se fait avec le keyvalue!!

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 29
    Par défaut
    Celà ne fonctionne pas, rien ne se passe (et ma combo n'est pas en readonly)

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 29
    Par défaut
    En fait, pour etre plus précis, le record de ma table est bien selectionné (j'ai des DBEdit qui se mettent à la bonne valeur) mais ma combo n'a toujours pas de texte dedans.

  9. #9
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    montre le code que tu as mit et la facon dont tu la rempli!!

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 29
    Par défaut
    AnsiString clientName;

    DataModule1->Table_Clients->First(); // Déplace le curseur sur le premier enregistrement
    clientName = DataModule1->Table_Clients->FieldByName("NOM")->Text;

    DBLookupComboBox_Client->KeyValue = clientName;

    J'ai un enregistrement avec le nom "TOTO" et si je fais :
    DBLookupComboBox_Client->KeyValue = "TOTO";
    l'enregistrement est bien selectionné, mais la combo n'affiche pas "TOTO"
    Tu vois ?

  11. #11
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    a place de ->Text utilise AsString
    et le keyField de ton combobox est bien lier sur le champ "Nom" de ta BD ?
    montre la facon que tu assigne le keyfield et listfield (listfield est facultatif alors tu la pe etre pas mit)

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 29
    Par défaut
    >a place de ->Text utilise AsString

    Ok.

    >et le keyField de ton combobox est bien lier sur le champ "Nom" de ta
    >BD ?

    Oui.

    >montre la facon que tu assigne le keyfield et listfield (listfield est
    >facultatif alors tu la pe etre pas mit)

    Je fais tous dans l'Object Inspector :
    KeyField est à NOM
    ListField est laissé vide
    ListFielIndex est à 0
    ListSource est mis à DataModule1->Clients

    Le reste, je n'ai rien changé.

  13. #13
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    ta bien "TOTO" dans ta liste déroulante ?

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 29
    Par défaut
    Oui, absolument.
    J'ai TOTO et tous les autres noms des enregistrements de ma table (donc, TUTU, TATA, TITI :-) )
    Ca, ca fonctionne. Et quand je selectionne TOTO, les DBEdit sont bien remplis avec les bonnes valeurs (j'ai des DBEdit pour le prenom, l'adresse etc)
    Le seul prob donc, c'est que le texte de la combo est vide et n'est pas initialisé à TOTO (ca ne s'affiche pas) sauf bien evidemment si je le selectionne manuellement avec la combo box.

  15. #15
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    alors ca je sait pas, car chez moi ca va #1
    essaye de mettre la listfield a "NOM"

    sinon je ne sait pas!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/05/2013, 15h03
  2. Réponses: 2
    Dernier message: 11/05/2013, 12h19
  3. Réponses: 1
    Dernier message: 02/05/2013, 20h19
  4. [MySQL] Comparer le contenu d'une variable aux valeurs contenues dans une table
    Par mmlio dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/10/2009, 17h20
  5. Liste des valeurs contenue dans une colonne
    Par TimDe dans le forum Excel
    Réponses: 5
    Dernier message: 15/08/2008, 17h11

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