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

MFC Discussion :

[MFC] probleme colonne listcontrol


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 142
    Par défaut [MFC] probleme colonne listcontrol
    bonsoir,

    Voila, je me trouve confronté à un problème d'affichage de données provenant de mysql.
    en fait, le but est de recopier les données dans un listcontrol en mode report.
    Cette affichage est donc en colonnes.

    Or, j'ai un problème à ce niveau là !

    Lors de mes requetes, les colonnes ne sont pas toutes affiché ...

    Voici le 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
    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
     
    {
      UINT i;
      LVCOLUMN m_pCol;
     
      for (i = 0; i < num_Cols; i++)
      {
    //  m_pCol = new LVCOLUMN;
        m_pCol.pszText = fd[0].name;
        m_lvDbTable.InsertColumn(i, m_pCol.pszText, LVCFMT_LEFT, 100);
      }
      return TRUE;
     
    }
     
    {
    MYSQL *conn;
     
        // initialisation 
        if((conn = mysql_init(NULL)) == NULL) 
        {  
        } 
     
        // connexion au serveur (ici, en local) 
        if(mysql_real_connect(conn,"127.0.0.1","aquarium","aquarium","aquarium",0,NULL,0)==NULL) 
        { 
       C_problemeSql dlg;
       dlg.DoModal();
        } 
     // Run the query
        if (( mysql_query(conn, "select * from t_brutes") ==0))
     {
          res = mysql_store_result(conn);
          num_fields = mysql_num_fields(res);
          fd = mysql_fetch_fields(res);
         // Build the listview headers based on the number of columns returned
       num_fields = mysql_num_fields(res);
       fd = mysql_fetch_fields(res);
     
         if (!BuildListView(num_fields, fd))
      {
           return;
      }
         // Set some nice grid lines and effect to the listview
         m_lvDbTable.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES | LVS_EX_INFOTIP);
        // Get all the rows in the result set
          while ( (row = mysql_fetch_row(res)))
       {
         for (j = 0; j < num_fields; j++)
      {
          // Fill in the listview items and subitems
       lvItem.mask = LVIF_TEXT;
       lvItem.iItem = i;
       lvItem.iSubItem = j;
       lvItem.pszText = row[j];
       m_lvDbTable.InsertItem(&lvItem);
       m_lvDbTable.SetItem(&lvItem);
     
       // Next Item
      }
         i++;
       }
     }
    // Now free the resources
    mysql_free_result(res);
        // on ferme la connexion au serveur MySQL 
        mysql_close(conn);
    }
    et voici le code qui me permet de vérifier si num_field est bien égal au nombre de champs voulu :
    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
    #include <stdafx.h>
    #include <mysql.h>
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <iostream>
     
    MYSQL_RES *res;
    MYSQL_FIELD fd[5];
    MYSQL_ROW row;
     
    unsigned int num_fields;
    unsigned int i;
    char test[200]="";
     
    void main(void)
     
    {
    MYSQL *conn;
     
        // initialisation 
        if((conn = mysql_init(NULL)) == NULL) 
        {  
        } 
     
        // connexion au serveur (ici, en local) 
        if(mysql_real_connect(conn,"127.0.0.1","aquarium","aquarium","aquarium",0,NULL,0)==NULL) 
        { 
        } 
     
     
    if (( mysql_query(conn, "select date,heure,a0,a1 from t_validees") ==0))
     {
          res = mysql_store_result(conn);
     printf("res : %d\n",res);
        // Build the listview headers based on the number of columns returned
     
       num_fields = mysql_num_fields(res);   // j'ai ajouter ceci 
       fd = mysql_fetch_fields(res);           //
       for(i = 0; i < num_fields; i++)   //
       {   
        printf("fd : %s\n", fd->name);
        sprintf(test,"%s%d ", test,fd[i].name);
        printf("%s\n",test);
        printf("Le champ %d est %s\n", i, fd[i].name);
     
       }
     
              ; //mettre un breakpoint ici et regarder ce que vaut test
      // Now free the resources
      mysql_free_result(res);
      // on ferme la connexion au serveur MySQL 
      mysql_close(conn);
     }
     
    }
    Explication :

    j'ai pu remarquer qu'il n'y a jamais de problème lors du premier passage , mais des qu'il arrive au deuxieme, il plante ... j'en conclu donc que c'est la structure res qui déconne, elle n'enregistre qu'un seul nom de colonne au lieu des 4 logiques !

    Quelqu'un m'as proposé de mettre a new à m_pcol mais je ne voit pas comment faire !

    De plus j'ai changé et mis "i" à un et helas, il ne reconnait rien donc je pense que c'est la structure qui déconne, mais la, je suis dépassé !

    please, help me, je doit finir sa pour mardi 19H et ce serait dommage d'avoir une sale note pour un truc pareil

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 142
    Par défaut
    Pour les interressé, j'ai trouvé le probème !

    En effet, cela venait pas du codage mais de mon VC++ qui n'avait pas les bonnes dll pour MySql ...

    Voili, Ce code est donc parfaitement opérationnel pour afficher dans un tableau ( listcontrol) les données contenu dans une base de données MySql

    Bye

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

Discussions similaires

  1. [MFC] probleme d'affichage en mode explorer
    Par ryu20 dans le forum MFC
    Réponses: 2
    Dernier message: 11/02/2005, 20h33
  2. [MFC] Probleme d'actualisation d'une listbox
    Par Robleplongeur dans le forum MFC
    Réponses: 5
    Dernier message: 13/05/2004, 14h15
  3. [MFC] CListCtrl: colonnes fixes + tri des items
    Par bigboomshakala dans le forum MFC
    Réponses: 5
    Dernier message: 10/05/2004, 22h54
  4. [MFC ]Probleme de linkage d'une dll
    Par Lysis dans le forum MFC
    Réponses: 9
    Dernier message: 22/01/2004, 14h51
  5. [MFC] probleme de rafraichissement d'une image
    Par Vestaproman dans le forum MFC
    Réponses: 6
    Dernier message: 09/01/2004, 23h59

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