ADO recordset

Signaler
Messages postés
120
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
9 mars 2008
-
Messages postés
120
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
9 mars 2008
-
Bonjour à tous

Je connait un peut ado, asser pour l'utiliser, mais je me pose une question.

Quand on fait un
select * from table;
existe-t-il un moyen de connaitre tous les champs de la table, dans le cas où on ne les connait pas.

Merci pour le temps.

6 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
_ConnectionPtr pConnDB;
_RecordsetPtr pSchemaRs;
_bstr_t bst;
....
....
pSchemaRs = pConnDB->OpenSchema(adSchemaTables);
while(!(pSchemaRs->EndOfFile)) {
bst = pSchemaRs->Fields->GetItem("TABLE_TYPE")->Value;
if(!strcmp("TABLE", bst)) {
bst = pSchemaRs->Fields->GetItem("TABLE_NAME")->Value;
// bst EST NOM DE TABLE

}

pSchemaRs->MoveNext();
}

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
120
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
9 mars 2008

Bonjour à tous

Merci beaucoup je n'en demandais pas tant, c'est magnifique.
Je m'empresse d'aller tester.

Merci.
Messages postés
120
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
9 mars 2008

Bonjour à tous

Je vient de tester et effectivement cela fonctionne numéro 1.

Mais peut-ëtre que je m'étais mal exprimé, ce que je cherche c'est pas comment obtenir le nom des tables, mais plutot le nom des champs d'une table spécifique.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
ah oui, je viens de correctement lire la question.
Attends chouia, je fais et je te le mets.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Fais gaffe j'ai tape dans notepad, erreurs possibles.

FieldPtr pFld;
long i, nFlds, lType, bRet = 1;
_bstr_t bst;
char buff[60];
...
...
try {
pSchemaRs = pConnDB->OpenSchema(adSchemaTables);
while(!(pSchemaRs->EndOfFile)) {
bst = pSchemaRs->Fields->GetItem("TABLE_TYPE")->Value;
if(!strcmp("TABLE", bst)) { // EVITE TABLES SYSTEME
// NOM TABLE DANS bst
buff[0] = '['; strcpy(buff+1, bst); strcat(buff, "]");
pRs->Open(buff, _variant_t((IDispatch *)pConnDB,true),
adOpenForwardOnly, adLockReadOnly, adCmdTable);
nFlds = pRs->Fields->Count;
for(i = 0; i < nFlds; i++) {
pFld = pRs->Fields->GetItem((long) i);
strcpy(buff, pFld->GetName());
// NOMS DES CHAMPS DANS buff
}
pRs->Close();
}
pSchemaRs->MoveNext();
}
}
catch(_com_error &e) {
... A SUIVRE

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
120
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
9 mars 2008

Bonjour à tous

Merci beaucoup pour l'aide rapide.
Cela fonctionne très bien.

C'est très gentil à toi de passer tant de temps pour ceux comme moi qui pose des questions. c'est très apprécié.
surtout pour ceux, qui comme moi commencent.