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 :

Doublon dans un Combobox requete sql


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    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
    Par défaut Doublon dans un Combobox requete sql
    Bonjour a tous.

    voici mon code que j'utilise :

    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
    SQLQuery1->Active=false;
    AnsiString genrechoisi=ComboBox1->Text;
    // Ajout des Valeurs choisie dans le combobox des marques
    ComboBox3->Items->Clear();
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Add("SELECT `Marques` FROM `produits` where `Genres` LIKE '"+genrechoisi+"' "); //AND Types LIKE '"+typechoisi+"'
    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();
      SQLQuery1->Active=true;
    }
    Donc il recupére ma valeur de mon combobox2 et de la il fait une requete sur ma table pour affichier les marques qui corespondent a mon choix du combobox2
    apres il y a une boucle qui les ajoutes suivant le nombre d'éléments trouvé.

    Le problemes est que si j'ai dans ma table 2,3,xxx entrée qui contient la meme marques il m'affiche plusieurs fois dans mon combobox mais je sais pas coment faire pour lui dire que si il trouve deja la valeur de ne pas la remettre mais je vois pas trop par ou commencer.

    Si quelqu'un pouvez m'aiguiller

    Merci

  2. #2
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonjour,

    Avant l'ajout dans ton ComboxBox, c.a.d avant de faire ton Add(...), tu peut tester avec (par ex):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ComboBox3->Items->IndexOf(SQLQuery1->FieldByName("Marques")->AsString)//etc
    qui doit te renvoyer une valeur > 0 si un élément similaire est déja présent dans la liste.

    A voir tester donc ...

    @+

  3. #3
    Membre éclairé
    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
    Par défaut
    J'ai essayer ceci :

    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
    SQLQuery1->SQL->Clear();
    AnsiString sqlt("SELECT `Marques` FROM `produits` where `Genres` LIKE '"+genrechoisi+"' ");
    SQLQuery1 ->SQL->Add(sqlt);
    SQLQuery1->ExecSQL();
    int nbritems=ComboBox3->Items->IndexOf(SQLQuery1->FieldByName("Marques")->AsString);
     
    if (nbritems <0) // test si la marque est deja ds le combobox
    {
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Add("SELECT `Marques` FROM `produits` where `Genres` LIKE '"+genrechoisi+"' "); //AND Types LIKE '"+typechoisi+"'
    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();
      SQLQuery1->Active=true;
    }
    }
    Mais il me dit qu'il ne trouve pas de champ Marques a la 5eme ligne

  4. #4
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Pour les instructions telles que SELECT et cie, je crois qu'il faut remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQLQuery1->ExecSQL();
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQLQuery1->Open();
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQLQuery1->Active = true;
    Enfin ... bref ... il vaut mieux que les données soient accessibles quoi.

  5. #5
    Membre éclairé
    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
    Par défaut
    En effet

    Merci maintenant mon code marche

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

Discussions similaires

  1. Comment éviter les doublons dans une ComboBox
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 27/07/2017, 16h03
  2. Autre PB:doublon dans une ComboBox
    Par perchman dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/03/2009, 19h50
  3. Débutant dans Birt aide requete SQL
    Par Twich dans le forum BIRT
    Réponses: 1
    Dernier message: 14/01/2009, 15h42
  4. [C#] doublon dans un combobox
    Par cortex024 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 02/12/2005, 13h45
  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