While(j != nbre_tot_colonnes)
bonjour tout le monde,
voilà (au cas où vous ne le sauriez pas encore!!) 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
voilà (au cas où vous ne le sauriez pas encore!!) 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
_variant_t Count = pRs->GetFields()->GetCount();
Count.ChangeType(VT_I4);
short NbrField = Count.intVal;
while(!pRs->EndOfFile)
{
while(j != NbrField)
{
///////////////////////////////////////////////////////////////////////////////////////////
// On renseigne lvItem
lvItem.mask = LVIF_TEXT;
lvItem.iItem = i;
long NumCol = j;
_variant_t VarNumCol (NumCol, VT_I4 );
var = pRs->Fields->GetItem(VarNumCol )->Value;
bst = var;
if(var.vt != VT_NULL)
{
lstrcpy(szBuffer, bst);
lvItem.iSubItem = j;
lvItem.pszText = szBuffer;
SendMessage(hList1, LVM_INSERTITEM, 0, (LPARAM)&lvItem);
}
long NumCol1 = j+1;
_variant_t VarNumCol1 (NumCol1, VT_I4 );
var = pRs->Fields->GetItem(VarNumCol1 )->Value;
bst = var;
if(var.vt != VT_NULL)
{
lstrcpy(szBuffer, bst);
lvItem.iSubItem = j+1;
lvItem.pszText = szBuffer;
SendMessage(hList1, LVM_SETITEM, 0, (LPARAM)&lvItem);
}
j++;
}
i++;
pRs->MoveNext();
}
A voir également:
- While(j != nbre_tot_colonnes)
- A sharing violation occurred while accessing ✓ - Forum Virus
- Eol while scanning string literal ✓ - Forum Python
- While vba ✓ - Forum VB / VBA
- While imbriqués - Forum Bases de données
- While batch - Forum Autoit / batch
4 réponses
C'est bizarre j'ai l'impression que ton j est pas initialisé. Si c'est bien ça c'est normal que ça plante (ton j vaut une valeur aléatoire, et forcément tu tentes d'accéder à une zone mémoire invalide, d'où le plantage !). Essaie de remplacer ton :
while (j!=nbFields){
...
j++;
}
par :
for(j=0;j<nbFields;j++){
...
}
while (j!=nbFields){
...
j++;
}
par :
for(j=0;j<nbFields;j++){
...
}
en fait comme je t'avais dis, j'avais bien essayé le for et ca ne marchait pas.
En jouant entre le for et le while, j'ai fini par oublié d'en retirer un sur les 2, ce qui fait que je les ai utilisé l'un aprés l'autre dans mon code, et vlà pas qu'ca marche!!
QUELLE JOIE!!
Mais mon souci, maintenant est que je ne sais pas pourquoi, à vrai dire cà me semble pas trés catholique.
Par hazard voit tu pourquoi ca marche?
allé ciao rom
En jouant entre le for et le while, j'ai fini par oublié d'en retirer un sur les 2, ce qui fait que je les ai utilisé l'un aprés l'autre dans mon code, et vlà pas qu'ca marche!!
QUELLE JOIE!!
Mais mon souci, maintenant est que je ne sais pas pourquoi, à vrai dire cà me semble pas trés catholique.
Par hazard voit tu pourquoi ca marche?
allé ciao rom
ha ha ha
c pourtant avec beaucoup d'intéret que j'ai essayé de vous suivre mais là franchement je comprend pas...
c une nouvelle langue ? c fou, pourkoi toujours tt vouloir changer...
elles vous plaisent pas les langues parlées de nos jours, alors vs en inventé d'otres...
bon j'arrête
si vous pouviez m'expliquer succintement en koi consiste ces différents codes incompréhensibles , je vous en serai reconnaissante
bon j'vais aller me prendre un aspirine , après tout ça ...
c pourtant avec beaucoup d'intéret que j'ai essayé de vous suivre mais là franchement je comprend pas...
c une nouvelle langue ? c fou, pourkoi toujours tt vouloir changer...
elles vous plaisent pas les langues parlées de nos jours, alors vs en inventé d'otres...
bon j'arrête
si vous pouviez m'expliquer succintement en koi consiste ces différents codes incompréhensibles , je vous en serai reconnaissante
bon j'vais aller me prendre un aspirine , après tout ça ...