cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 2009
-
31 mars 2005 à 23:28
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 2009
-
6 avril 2005 à 08:14
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 5 avril 2005 à 22:08
euh excuse moi... c'est juste a propos de la fonction que tu as poster, tu as oublier de mettre la fonction:
OdbcEnumFields();
si tu pouvais la rejouter ca serait super !
merci par avance et excuse pour le derangement !
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 1 avril 2005 à 09:56
ok, je vais regarder cela !
merci a toi BruNews !
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 31 mars 2005 à 23:52
Voila un début, pas trop le temps d'aller plus loin en ce moment:
#define STR_LEN 132
long lerror = 0;
SQLINTEGER cbTableName, cbTypeName;
SQLCHAR szTableName[STR_LEN];
SQLCHAR szTypeName[STR_LEN];
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 31 mars 2005 à 23:28
salut, voila je viens de tomber sur ta source que je me suis empressé de tester... je le trouve nickel et m'a permit de bien comprendre comment se servir d'odbc, cependant j'ai une petite question:
-> Y a-t-il un moyenne de connaitre le nombre et le nom des tables ainsi que les nombres et le nom des attributs de chaque table?
6 avril 2005 à 08:14
5 avril 2005 à 23:19
{ // return != 0 SI ERREUR
SQLHANDLE hstmt;
char *c;
lerror = 1;
retcd = SQLAllocHandle(SQL_HANDLE_STMT, hconn, &hstmt);
if(retcd & 0xFFFE) return;
retcd = SQLColumns(hstmt, 0, 0, 0, 0, szTableName, SQL_NTS, 0, 0);
if(retcd & 0xFFFE) goto fieldsFree;
SQLBindCol(hstmt, 4, SQL_C_CHAR, szColumnName, STR_LEN, &cbColumnName);
SQLBindCol(hstmt, 5, SQL_C_SSHORT, &DataType, 0, &cbDataType);
SQLBindCol(hstmt, 6, SQL_C_CHAR, szTypeName, STR_LEN, &cbTypeName);
SQLBindCol(hstmt, 7, SQL_C_SLONG, &ColumnSize, 0, &cbColumnSize);
SQLBindCol(hstmt, 8, SQL_C_SLONG, &BufferLength, 0, &cbBufferLength);
SQLBindCol(hstmt, 9, SQL_C_SSHORT, &DecimalDigits, 0, &cbDecimalDigits);
SQLBindCol(hstmt, 10, SQL_C_SSHORT, &NumPrecRadix, 0, &cbNumPrecRadix);
SQLBindCol(hstmt, 11, SQL_C_SSHORT, &Nullable, 0, &cbNullable);
SQLBindCol(hstmt, 12, SQL_C_CHAR, szRemarks, REM_LEN, &cbRemarks);
SQLBindCol(hstmt, 13, SQL_C_CHAR, szColumnDefault, STR_LEN, &cbColumnDefault);
SQLBindCol(hstmt, 14, SQL_C_SSHORT, &SQLDataType, 0, &cbSQLDataType);
SQLBindCol(hstmt, 15, SQL_C_SSHORT, &DatetimeSubtypeCode, 0, &cbDatetimeSubtypeCode);
SQLBindCol(hstmt, 16, SQL_C_SLONG, &CharOctetLength, 0, &cbCharOctetLength);
SQLBindCol(hstmt, 17, SQL_C_SLONG, &OrdinalPosition, 0, &cbOrdinalPosition);
SQLBindCol(hstmt, 18, SQL_C_CHAR, szIsNullable, STR_LEN, &cbIsNullable);
nextField:
c = szbuff;
retcd = SQLFetch(hstmt);
if(retcd & 0xFFFE) goto fieldEnd;
*c 32; *(c+1) 'F'; *(c+2) = 'l'; *(c+2) = 'd'; *(c+3) = '(';
c = bnultoa(OrdinalPosition, c+4);
*c ')'; *(c+1) 32;
c = bnstrcpy(c+2, (char*)szColumnName);
*c ','; *(c+1) 32;
c = bnstrcpy(c+2, (char*)szTypeName);
if(DataType == 12) {
*c 32; c bnultoa(ColumnSize, c+1);
}
MessageBox(0, szbuff, szappname, 0x40);
goto nextField;
fieldEnd: lerror = 0;
fieldsFree: SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
}
5 avril 2005 à 22:08
OdbcEnumFields();
si tu pouvais la rejouter ca serait super !
merci par avance et excuse pour le derangement !
1 avril 2005 à 09:56
merci a toi BruNews !
31 mars 2005 à 23:52
#define STR_LEN 132
long lerror = 0;
SQLINTEGER cbTableName, cbTypeName;
SQLCHAR szTableName[STR_LEN];
SQLCHAR szTypeName[STR_LEN];
void OdbcEnumTables()
{ // return != 0 SI ERREUR
SQLHANDLE hstmt;
lerror = 1; // presume erreur
retcd = SQLAllocHandle(SQL_HANDLE_STMT, hconn, &hstmt);
if(retcd & 0xFFFE) return;
retcd = SQLTables(hstmt, 0, 0, 0, 0, 0, SQL_NTS, 0, 0);
if(retcd & 0xFFFE) goto tablesFree;
SQLBindCol(hstmt, 3, SQL_C_CHAR, szTableName, STR_LEN,&cbTableName);
SQLBindCol(hstmt, 4, SQL_C_CHAR, szTypeName, STR_LEN, &cbTypeName);
nextTable:
retcd = SQLFetch(hstmt);
if(retcd & 0xFFFE) goto tablesEnd;
if(szTypeName[0] != 'T') goto nextTable;
if(szTypeName[1] != 'A') goto nextTable;
if(szTypeName[5] != 0) goto nextTable;
MessageBox(0, (char*)szTableName, "TABLE", MB_ICONINFORMATION);
OdbcEnumFields();
goto nextTable;
tablesEnd: lerror = 0;
tablesFree: SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
}
31 mars 2005 à 23:28
-> Y a-t-il un moyenne de connaitre le nombre et le nom des tables ainsi que les nombres et le nom des attributs de chaque table?
Merci par avance pour ta réponse...