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 :

API MySql avec DBgrid


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 79
    Par défaut API MySql avec DBgrid
    bonjour,

    J'utilise l'API MySql pour récupérer les données de la table, et je souhaite les afficher dans le composant dbgrid, si j'utilise une liste box sa fonctionne mais j'aurais souhaite le faire avec un DBGrid.....


    Depuis le tant que la question tourne sur le forum, il n'y a toujours pas de solution......

    HELP ME !!!!!


    source :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
    	MYSQL *mySQL;
    	mySQL = mysql_init(NULL);
    	MYSQL_RES *myRES;
    	MYSQL_ROW myROW;
    	AnsiString aStr;
    
    	if (!mysql_real_connect(mySQL, ADDR.c_str(), root.c_str(), password.c_str(), BDD.c_str(), 0, NULL, 0))
    	{
    	Application->MessageBox("Erreur de Login ou Password...","", MB_OK|MB_ICONEXCLAMATION);
    	}
    	else
    	{
    
    
    
       if (!mysql_query(mySQL, "select * from gestions_clients")) {
    	myRES = mysql_store_result(mySQL);
    	if (myRES) {
    		for(unsigned int i = 0; i < myRES->row_count; i++) {
    			myROW = mysql_fetch_row(myRES);
    			for(unsigned int j = 0; j < mysql_num_fields(myRES); j++) {
    				aStr = myROW[j];
    
                                      /*** ICI doit etre le DBGrid ***/
    
    
    				}
    			}
    			mysql_free_result(myRES);
    		}
    	}
       }

  2. #2
    Membre expérimenté Avatar de Bily.sdi
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 208
    Par défaut Dbgrid
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    resultat->Fields[ x]->DisplayName; // ceci est le nom du champ/colonne
     
     resultat->Fields[ x ]->AsString 
     // ceci permet de lire la valeur du champ où est positionné le curseur
     
      resultat->FieldByName("NOM")->Value = "Bily.sdi"
     // ceci ecrira Bily.sdi dans le champ NOM sur la ligne où le curseur est  
     // positionné
     
    ex:
          resultat->FieldByName("CUST_NAME")->Value = CUST_NAME->Text;
          resultat->FieldByName("CONT_PERS")->Value = CONT_PERS->Text;
          resultat->FieldByName("CONT_NUM")->Value = CONT_NUM->Text;
          resultat->FieldByName("CONT_GSM")->Value = CONT_GSM->Text;
    en gros :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     while (!eof(....))
      { 
         resultat->Append(); // nouvelle enregistrement
    je t'ai envoyé un email PV
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
         resultat->Insert();  // mode insertion
         resultat->Edit();   // mode ecriture
     
         update_consult(); // mise a jour de ta bd
     
     }       
         resultat->Post();                                    
         resultat->Refresh();
     
         resultat_cpt->Caption = resultat->RecordCount;

  3. #3
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 79
    Par défaut
    j'ai pas trop compris le code,


    se que je veut ces que par exemple dans la premiere colone, il affiche tous se qui et contenu dans le champs nom de la table et que dans la deuxième il affiche tous les prenom contenu dans la table.....

  4. #4
    Membre Expert
    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
    Par défaut
    Il n'y a pas d'implémentation directe avec l'API MySQL.

    Si tu veux utiliser une grille quelconque, tu dois la remplir toi même, ligne par ligne et colone par colone.

  5. #5
    Membre expérimenté Avatar de Bily.sdi
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 208
    Par défaut creation et remplissage d'une bd a partir d'une dbgrid
    Hi

    voici un exemple, tu trouvera comment proceder !

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
     
    void __fastcall TForm1::SaveClick(TObject *Sender)
    {
      SaveDialog1->FileName="Resultat.dbf";
     
      if(SaveDialog1->Execute())
      {
       CreateBD(ExtractFileName(SaveDialog1->FileName),
                ExtractFilePath(SaveDialog1->FileName));
      }
    }
    //-------------------------------------------------------------------------
     
    void TForm1::CreateBD(AnsiString Name,AnsiString Path)
    {
      // En premier, description de la table qui doit être nommée
      Table->Active=false;
      Table->DatabaseName = Path;
      Table->TableType = ttDBase; // ou ttdefault;
      Table->TableName = Name;
     //----------------------------------------
     
     if(!Table->Exists)
     {
      Table->Active = false; // Le composant Table ne doit pas être actif
      Table->FieldDefs->Clear(); // reset la table si qqch...
      TFieldDef *pNewDef; // pointeur sur la table
     
     // Ensuite description des champs
     // resultat est une dbgrid contenant des données via une requete sql
     
             // nombre de champ (titre)
      for(int x=0; x< resultat->FieldCount; x++) 
      {     // ajout d'une colone
        pNewDef = Table->FieldDefs->AddFieldDef();               
            // lecture des noms des colonnes de la dbgrid   
        pNewDef->Name = resultat->Fields[x]->DisplayName;
            // lecture de type de la colonne de la dbgrid   
        pNewDef->DataType = resultat->Fields[x]->DataType;
            // lecture de la taille de la colonnes de la dbgrid   
        pNewDef->Size = resultat->Fields[x]->Size;
      }
      Table->CreateTable();
     }
     
    //------------------------------------
     
     // remplissage de la bd
     Table->Active = false;
     Table->DatabaseName = Path;
     Table->TableName = Name;
     Table->Active=true;
     
                         // nombre d'enregistrement dans la dbgrid
     for (int y=0 ; y< resultat->Fields[0]->DataSet->RecordCount; y++)
     { 
       // mode ajout , insertion et edition ;
        Consult->Append(); Consult->Insert(); Consult->Edit();
     
      for (int x=0 ; x< resultat->FieldCount; x++)
      {
        // recherche le champ où il faut se positionner
        Table->FieldByName(resultat->Fields[x]->DisplayName)->Value
                                 = resultat->Fields[x]->AsString;
         OU
     
        // simplement
       Table->Fields[x]->Value = resultat->Fields[x]->AsString;
     
      }
     }
       //fermeture de la table
       Consult->Post(); 
       Consult->Refresh();
    }
    //----------------------------------------
    @+ à Toutes et Tous

  6. #6
    Membre expérimenté Avatar de Bily.sdi
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 208
    Par défaut correction + ecriture txt pour Excel
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
      out = fopen(xls.c_str(),"w");
     
      for(int x=0; x< resultat->FieldCount; x++)
      {  // Ensuite description des champs
        pNewDef = Table->FieldDefs->AddFieldDef();
        pNewDef->Name = resultat->Fields[x]->DisplayName;
        pNewDef->DataType = resultat->Fields[x]->DataType;
        pNewDef->Size = resultat->Fields[x]->Size;
        fprintf(out,"%s\t",resultat->Fields[x]->DisplayName);
      }
      Table->CreateTable();
     }
     
     // remplissage de la bd
     Table->Active = false;
     Table->DatabaseName = Path;
     Table->TableName = Name;
     Table->Active=true;
     for (int y=0 ; y< resultat->Fields[0]->DataSet->RecordCount; y++)
     {
      Table->Append(); Table->Insert(); Table->Edit();
      fprintf(out,"\n");
     
       for (int x=0 ; x< resultat->FieldCount; x++)
      {
       Table->FieldByName(resultat->Fields[x]->DisplayName)->Value 
                               = resultat- >Fields[x]->AsString;
     
       fprintf(out,"%s\t",resultat->Fields[x]->AsString);
      }
     
      resultat->Fields[0]->DataSet->Next();
     
     }
     
      Table->Post();
      Table->Refresh();
      Table->Active=false;
      fclose(out);

  7. #7
    Membre expérimenté Avatar de Bily.sdi
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 208
    Par défaut important
    il ya un problem lors de la copie

    il faut tester les champs uniquement les champ de type Date ou DateTime

    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      if(resultat2->Fields[x]->DataType != ftDate)
     
        Table->FieldByName(resultat2->Fields[x]->DisplayName)->Value 
                                =  resultat2->Fields[x]->AsString;
       else
        Table->FieldByName(resultat2->Fields[x]->DisplayName)->Value 
                                = resultat2->Fields[x]->AsDateTime;
    j'esper que cette foix ci il y aura pas de problem ! ;-)

    sinon poster ou envoyé moi un MP
    @+

Discussions similaires

  1. API mySQL avec Delphi
    Par deneche dans le forum Bases de données
    Réponses: 8
    Dernier message: 14/09/2010, 21h05
  2. probleme avec API mysql
    Par tyson75 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/06/2007, 20h00
  3. Pb avec l'API Mysql :s
    Par ramislebob dans le forum C
    Réponses: 5
    Dernier message: 05/09/2006, 19h15
  4. BCB6 & Mysql(api) :pb avec requete
    Par o_live dans le forum C++Builder
    Réponses: 4
    Dernier message: 03/03/2005, 15h12
  5. Api mysql avec Devc++, erreur de compilation
    Par Viiince dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 15/06/2004, 17h19

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