Recordset->Fields ??

Résolu
cs_hakim0 Messages postés 123 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 12 août 2008 - 31 juil. 2006 à 17:24
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020 - 22 avril 2007 à 10:40
j'ai une question
je veu recuperer les noms des champ sur une tabl access, je travail avec ado api en c++
RecordSet->Fiels->Count = le nombre des champ,
et les noms?? comment?? svp.

[s]schow/s[?]

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 août 2006 à 13:36
J'extrais à la va-vite un mini bout de mon analyseur de structure de MDBs:

  _ConnectionPtr pConnDB;
  _RecordsetPtr pRs, pSchemaRs;
  FieldPtr pFld;
  _bstr_t bstVal;
  long i, nFlds;
  .....
  try {
    pSchemaRs = pConnDB->OpenSchema(adSchemaTables);
    while(!(pSchemaRs->EndOfFile)) {
      bstVal = pSchemaRs->Fields->GetItem("TABLE_TYPE")->Value;
      if(!strcmp("TABLE", bstVal)) {
        bstVal = pSchemaRs->Fields->GetItem("TABLE_NAME")->Value;
        ....
        ....
        pRs->Open(pData->szBuff, _variant_t((IDispatch *)pConnDB,true),
                  adOpenForwardOnly, adLockReadOnly, adCmdTable);
        nFlds = pRs->Fields->Count;
        for(i = 0; i < nFlds; i++) {
          pFld = pRs->Fields->GetItem((long) i);
          bstVal = pFld->GetName()); // C'EST ICI
          ....
          ....
        }
        pRs->Close();
      }
      pSchemaRs->MoveNext();
    }
  }
  catch(_com_error &e) {/* A TOI DE VOIR */}
  pConnDB->Close();

ciao...
BruNews, MVP VC++
3
cs_hakim0 Messages postés 123 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 12 août 2008 1
5 août 2006 à 12:35
oui, le meme code que j'avait trouver sur microsoft.msdn...


Merci pour la reponse,:)

[s]schow/s[?]
0
cs_hakim0 Messages postés 123 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 12 août 2008 1
8 sept. 2006 à 21:05
j'ai une autre question,
Comment on peut recuperer le type de column, les column j'ai les recuperer de chaqu table, mais le type comment??
Merci pour Votre message.

[s]schow/s[?]
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 sept. 2006 à 21:19
J'ai mis ce qu'il faut ici:
http://brunews.free.fr/brunews/download/AdoSmpl1.zip

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020
21 avril 2007 à 11:39
Moi j'ai une question, en fait, brunews, je te remercie déja pour tes nombreuses aides sur ADO sur ce forum :)
J'ai donc compris une bonne partie de ton code.
Je bloque sur une petite broutille, en fait, je viens de créer une méthode ExecuteSql ( dans ma classe perso), je passe donc une requete sql sous forme de CString a cette méthode, je souhaiterais que cette méthode me retourne un  "_RecordsetPtr", afin de pouvoir l'interpéter aisément par la suite. Aparemment, ce type de retour n'ai pas accepté par Visual c++6, as tu des infos la dessus ?

Merci beaucoup!
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 avril 2007 à 19:52
Faudrait que je trouve le temps de tester.
C'est quoi le message d'erreur ?

ciao...
BruNews, MVP VC++
0
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020
22 avril 2007 à 10:40
Yann_lo_san viens de trouvé mon problème.


En réalité, j'avai mis la ligne avec la directive #import.... dans le .cpp de ma classe, et non  de la .h !!


Erreur de noob !


C'est pour ca que le type _RecordsetPtr n'était pas reconnu!


Merci  à tous!
0
Rejoignez-nous