PDA

Visualizza la versione completa : [C++] FetchScroll ODBC con colonne dinamiche


stefanoB
26-11-2009, 15:50
Se utilizzo un array di strutture non tutti i valori delle righe sono ritornate nel buffer, es. righe da fetch 5, in buffer solo 3 con dati, cosė ritornate:

riga colonna 1 colonna 2
1° valore riga1 valore riga1
2° valore riga3 valore riga3
3° valore riga5 valore riga5



la riga 2 ha il valore della 3°, la 3° i valori della 5°, la 4° e la 5° vuote, mentre tutte le righe hanno valori

uso sybase come db e odbc 3, escludo che il problema sia con il db ma con la struttura dato che con array[][] in column-wise funziona tutto perfettamente
il codice nella parti salienti č il seguente:


SQLSMALLINT nrCr;


struct DataBinding {
SQLWCHAR data[10][100];
} *columnData;



SQLNumResultCols(stmt, &nrCr);


SQLSetStmtAttr(...)
SQLSetStmtAttr(...)
SQLSetStmtAttr(...)


//allocazione array di strutture per i dati della colonna
columnData = (struct DataBinding*)malloc(nrCr * sizeof(struct DataBinding));

//binding
for(int i=0; i<nrCr; i++) {
SQLBindCol(stmtR, i+1, SQL_C_WCHAR, &columnData[i].data, 100, SQL_NULL_HANDLE);
}


//ritorno dei dati
while((rc=SQLFetchScroll(stmtR,SQL_FETCH_NEXT,0))! = SQL_NO_DATA) {
for(unsigned int r=0; r<nrRowsFetched; r++) {
for(int c=0; c<nrCr; c++) {
MessageBox(0,columnData[c].data[r],L"test",MB_OK);
}
}
}

stefanoB
01-12-2009, 15:31
... nessuna idea :confused:

stefanoB
09-12-2009, 16:34
???? :confused:

Loading