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