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 :

Ajouter les entrées dans une combobox a partir requete sql


Sujet :

C++Builder

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut Ajouter les entrées dans une combobox a partir requete sql
    c'est encore moi..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    genrechoisi=ComboBox1->Text;
    typechoisi=ComboBox2->Text;
    //ShowMessage (genrechoisi);
    //ShowMessage (typechoisi);
    SQLQuery1->Active=false;
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Add("SELECT * FROM `produits` where `Genres` LIKE 'genrechoisi' AND `Types` LIKE 'typechoisi'");
    SQLQuery1->Active=true;
    Donc je recupere la valeur choisie dans le combobox 1 et 2.
    Ensuite j'aimerais afficher le champ "Marques" de ma table suivant les criteres choisis dans les combobox 1 et 2.
    Je sais pas si il faut que j'utilise un DBCombobox ou si il est possible d'ajouter les valeurs comme ca.

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    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
    genrechoisi=ComboBox1->Text;
    typechoisi=ComboBox2->Text;
    //ShowMessage (genrechoisi);
    //ShowMessage (typechoisi);
     
    AnsiString requete1 ;
    requete1 = "SELECT * FROM \`produits\` where \`Genres\` = ' ";
    requete1 = requete1 + genrechoisi.C_Str() ;
    requete1 = requete1 + "\'AND \`Types\` =\'";
    requete1 = requete1 + typechoisi.C_Str() ;
    requete1 = requete1 + "\'";
    Memo1->Lines->Add(requete1.C_Str()); // pour regarder la requete
    SQLQuery1->Active=false;
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Add(requete1.C_Str());
    SQLQuery1->Active=true;
    A peu de chose pres , çà doit etre çà

    Sinon , regardes cet exemple que j ai posté qui utilise l API SQL
    http://www.developpez.net/forums/sho...d.php?t=427567

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    il m'indique comme erreur
    [BCC32 Erreur] Unit3.cpp(86): E2316 'C_Str' n'est pas un membre de 'AnsiString'
    Aussi ici je vois que tu affiche dans un memo est ce la meme manip pour le combobox ? cad Combobox1->Lines->Add(requete1.C_Str());

  4. #4
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Essai en minuscule: c_str()
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    oui autant pour moi

    c est en minuscule


    sinon c est çà

    ComboBox1->Items->Add("abcdefg");

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    ah oui en effet en minuscule ca passe mais bon la en fait il me stock ma requete sql dans un memo... hors j'aimerais qu'il m'affiche les resultat dans ma combobox3... Sinon ma requete sql de départ marchais tout aussi bien

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    Je reformule plus clairement ma question :

    Comment faire pour que :

    Je récupere tous mes champs "Model" qui correspondent a mes "Genres" et "Types" choisi via le combobox1 et combobox2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQLQuery1->SQL->Add("SELECT `Model` FROM `produits` where `Genres` LIKE 'genrechoisi' AND `Types` LIKE 'typechoisi'");
    SQLQuery1->Active=true;
    Je voudrais quil m'affiche tt les models disponible dans un combobox3.

    Merci

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

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut
    Il suffit de parcourir les enregistrements présents dans ton Query et de les ajouter dans ton ComboBox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ComboBox->Items->Clear();
    int count = Query->RecordCount;
     
    for (int i = 0;i < count;i++)
    {
      ComboBox->Items->Add(Query->FieldByName(MonChamp)->AsString;
      Query->Next();
    }
    Tu peux également essayer de passer par un TDBComboBox. Dans ce cas là, ton combobox sera directement lié à ta source de données.
    + + +

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    Citation Envoyé par bakaneko Voir le message
    Tu peux également essayer de passer par un TDBComboBox. Dans ce cas là, ton combobox sera directement lié à ta source de données.
    Merci pour le compteur je voyais +- ce qu'il fallair faire mais le pondre en c pas evident. je vais le tester de suite.

    Sinon pour le DBCombobox j'y avais penser mais j'ai pas chercher plus loin que ca avait l'air plus compliqué. Tu en pense quoi c'est mieux quel methode ?

    merci

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ComboBox3->Items->Clear();
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Add("SELECT `Marques` FROM `produits` where `Genres` LIKE 'Femmes' AND `Types` LIKE 'Parfums'");
    int count = SQLQuery1->RecordCount;
    SQLQuery1->ExecSQL();
     
    for (int i = 0;i < count;i++)
    {
      ComboBox3->Items->Add(SQLQuery1->FieldByName["Marques"])->AsString;
      SQLQuery1->Next();
    }
    il me renvoi une erreur :

    [BCC32 Erreur] Unit3.cpp(95): E2235 Une fonction membre doit être appelée ou son adresse prise
    Que dois je faire ?

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    avec ce code il compile :

    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
    genrechoisi=ComboBox1->Text;
    typechoisi=ComboBox2->Text;
    ShowMessage (genrechoisi);
    ShowMessage (typechoisi);
     
    ComboBox3->Items->Clear();
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Add("SELECT `Marques` FROM `produits` where `Genres` LIKE 'Femmes' AND `Types` LIKE 'Parfums 30ml'");
    int count = SQLQuery1->RecordCount;
    SQLQuery1->ExecSQL();
     
    for (int i = 0;i < count;i++)
    {
      ComboBox3->Items->Add("SQLQuery1->FieldByName[Marques]");
      SQLQuery1->Next();
     
    }
    qd je lance le programme aprés il me marque une erreur :

    Exception déclenchée à $7C812A7B. Classe d'exception EDatabaseError avec message 'SQLQuery1: Impossible d'effectuer cette opération sur un ensemble de données fermé'. Processus Project1.exe (2892)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut
    Voici la correction de ton code

    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
     
    genrechoisi=ComboBox1->Text;
    typechoisi=ComboBox2->Text;
    ShowMessage (genrechoisi);
    ShowMessage (typechoisi);
     
    ComboBox3->Items->Clear();
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Add("SELECT Marques FROM produits where Genres LIKE 'Femmes' AND Types LIKE 'Parfums 30ml'");
    SQLQuery1->Open();//mieux vaut utiliser Open pour un SELECT que ExecSQL qui est plus réservé au INSERT/UPDATE
    int count = SQLQuery1->RecordCount;
     
    for (int i = 0;i < count;i++)
    {
      ComboBox3->Items->Add(SQLQuery1->FieldByName("Marques")->AsString);
      SQLQuery1->Next();
    }
    L'avantage du DBComboBox est que le contenu du ComboBox reflète en permanence le résultat de ta requête. Donc, si tu rééxecutes ta requête, ton ComboBox sera mis en jour. En contre partie, je le trouve beaucoup moins souple.
    + + +

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    oki merci je testerais ca apres.

    POur ce qui est du DBCombobox qui refletera ma base de données ce n'est pas un probleme vu que je dois dabord choisir le choix dans un combobox2( avec la valeurs de OnChange dans les evenement ) donc ma combobox3 sera bien mis a jour en temp voulu.

    Je testerais ton code cette aprem la je dois partir.

    Merci

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    ca marche merci bien

    je passe en resolu

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/12/2013, 21h38
  2. [AC-2013] Ajout d'entrée dans une table à partir d'une requête !
    Par KClaudel dans le forum VBA Access
    Réponses: 4
    Dernier message: 26/07/2013, 15h59
  3. comment ajouter des données et les enregister dans une combobox?
    Par mohtah2011 dans le forum Discussions diverses
    Réponses: 1
    Dernier message: 24/06/2011, 19h56
  4. Réponses: 4
    Dernier message: 10/12/2006, 16h47
  5. [vbexcel]Comment supprimer les doublons dans une combobox?
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 24/11/2005, 11h12

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