While(j != nbre_tot_colonnes)

While(j != nbre_tot_colonnes) - C++ - Programmation

Marsh Posté le 20-05-2005 à 09:19:58    

bonjour tout le monde,  
voilà, je fais une APIwin32 sous VisualC++ et je travaille avec ADO avec pRs qui pointe sur un RecordSet.  
Voilà je récupère les différents enregistrements d'une table de ma base de données que j'insère dans une listview.Pour tous les enregistrements de ma table je fais un "while(!pRs->EndOfFile)", et je voudrais faire de même pour toutes les colonnes (évitant ainsi d'éviter de répéter continuellement  
"if(var.vt != VT_NULL) {..........}" pour chaque SubItem.  
Donc je compte le nombre de colonnes et je fais une boucle "tant que j différent du nombre total de colonne" (ceci est en fait pour simplifier le code étant donné que j'ai plus de 30 colonnes), mais ca ne marche pas (abnormal program termination), je ne vois pas le problème!!  
(vous verrez également que je regroupe les colonnes par 2 étant donné que pour le 1er champ je dois faire un INSERTITEM puis les autres un SETITEM.  
j'espère avoir été assez clair.  
Déjà merci  
 
 

Code :
  1. _variant_t Count = pRs->GetFields()->GetCount();
  2. Count.ChangeType(VT_I4);
  3. short NbrField = Count.intVal;
  4. while(!pRs->EndOfFile)
  5. {
  6.     while(j != NbrField)
  7.     {
  8. ///////////////////////////////////////////////////////////////////////////////////////////
  9.         // On renseigne lvItem
  10.         lvItem.mask = LVIF_TEXT;
  11.         lvItem.iItem = i;
  12.         long NumCol = j;
  13.         _variant_t VarNumCol (NumCol, VT_I4 );
  14.         var = pRs->Fields->GetItem(VarNumCol )->Value;
  15.         bst = var;
  16.         if(var.vt != VT_NULL)
  17.         {
  18.             lstrcpy(szBuffer, bst);   
  19.             lvItem.iSubItem = j;
  20.             lvItem.pszText = szBuffer;
  21.             SendMessage(hList1, LVM_INSERTITEM, 0, (LPARAM)&lvItem);
  22.         }
  23.         long NumCol1 = j+1;
  24.         _variant_t VarNumCol1 (NumCol1, VT_I4 );
  25.         var = pRs->Fields->GetItem(VarNumCol1 )->Value;
  26.         bst = var;
  27.         if(var.vt != VT_NULL)
  28.         {
  29.             lstrcpy(szBuffer, bst);   
  30.             lvItem.iSubItem = j+1;
  31.             lvItem.pszText = szBuffer;
  32.             SendMessage(hList1, LVM_SETITEM, 0, (LPARAM)&lvItem);
  33.         }
  34.         j++;
  35.     }
  36.     i++;
  37.     pRs->MoveNext();
  38. }

Reply

Marsh Posté le 20-05-2005 à 09:19:58   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed