Newsgroup: it.comp.lang.c++
Titolo: CDAODatabase e CDAORecordset

Qualcuno ha un pezzo di codice d'esempio in cui io possa capire rapidamente
come aprire e leggere alcune tabelle di un file ACCESS  (.mdb) con Microsoft
VC++?
In particolare mi serve capire come trovare i recordsets all'interno del
database.
Grazie,
Alessandro

 database.
eccoti un po di codice fammi sapere se ai dei problemi
ciao 
deadb...@hotmail.com
/******************mioFile.cpp******************/
#include <stdio.h>
#include <afxdao.h>   // MFC DAO database classes
CString VariantToStr(const COleVariant& var);//   Funzione che trasforma il
valore di COleVariant in Stringa
void ReadRsFromDb(void);//Funzione che legge il recordset dal database
void ReadRsFromDb(void)
{
 CDaoDatabase db;//Oggeto CDaoDatabase
 db.Open("miofile.mdb");// Apertura di un database access per gli altri tipi
di db devi aggiungere altri parametri
 CString strSql="SELECT * FROM miaTabella";//Query di selezione
 CDaoRecordset rs(&db);//Oggetto recordset
 rs.Open(dbOpenDynaset, strSql);//Apertura del recordset con query
 int id=0, count=0;
 count=rs.GetFieldCount();//Legge il numero dei field
 rs.MoveFirst();//Sposta il cursore sul primo
 for(id=0; id<count; id++)
 {
     rs.MoveFirst();//Sposta il cursore sul primo
    while(rs.EOF())//Ciclo fin a quando non arrivo all'ultimo
       CDaoFieldInfo fldInfo;//oggeto per leggere le informazioni del field
       CString strMsg="";//Strinag di output
       rs.GetFieldInfo(id,  fldInfo);//leggo le info del field
       CString strValue=VariantToStr(rs.GetFieldValue(id)));//leggo il
valore del field selezionato
       strMsg.Format(_T("%s=%s"), fldInfo.strName, strValue);//imposta la
stringa di output
        printf(strMsg);//stampo il nome del campo è il suo valore attuale
       rs.MoveNext();//mi sposto sulla riga successiva
    }
 }
}
//   Funzione che trasforma il valore di COleVariant in Stringa
CString VariantToStr(const COleVariant& var)
{
 CString strRet;
 strRet = _T("Fish");
 switch(var.vt){
  case VT_EMPTY:
  case VT_NULL:
   strRet = _T("NULL");
   break;
  case VT_I2:
   strRet.Format(_T("%hd"),V_I2(&var));
   break;
  case VT_I4:
   strRet.Format(_T("%d"),V_I4(&var));
   break;
  case VT_R4:
   strRet.Format(_T("%e"),(double)V_R4(&var));
   break;
  case VT_R8:
   strRet.Format(_T("%e"),V_R8(&var));
   break;
  case VT_CY:
   strRet = COleCurrency(var).Format();
   break;
  case VT_DATE:
   strRet = COleDateTime(var).Format(_T("%m %d %y"));
   break;
  case VT_BSTR:
   strRet = V_BSTRT(&var);
   break;
  case VT_DISPATCH:
   strRet = _T("VT_DISPATCH");
   break;
  case VT_ERROR:
   strRet = _T("VT_ERROR");
   break;
  case VT_BOOL:
   return BoolToStr(V_BOOL(&var));
  case VT_VARIANT:
   strRet = _T("VT_VARIANT");
   break;
  case VT_UNKNOWN:
   strRet = _T("VT_UNKNOWN");
   break;
  case VT_I1:
   strRet = _T("VT_I1");
   break;
  case VT_UI1:
   strRet.Format(_T("0x%02hX"),(unsigned short)V_UI1(&var));
   break;
  case VT_UI2:
   strRet = _T("VT_UI2");
   break;
  case VT_UI4:
   strRet = _T("VT_UI4");
   break;
  case VT_I8:
   strRet = _T("VT_I8");
   break;
  case VT_UI8:
   strRet = _T("VT_UI8");
   break;
  case VT_INT:
   strRet = _T("VT_INT");
   break;
  case VT_UINT:
   strRet = _T("VT_UINT");
   break;
  case VT_VOID:
   strRet = _T("VT_VOID");
   break;
  case VT_HRESULT:
   strRet = _T("VT_HRESULT");
   break;
  case VT_PTR:
   strRet = _T("VT_PTR");
   break;
  case VT_SAFEARRAY:
   strRet = _T("VT_SAFEARRAY");
   break;
  case VT_CARRAY:
   strRet = _T("VT_CARRAY");
   break;
  case VT_USERDEFINED:
   strRet = _T("VT_USERDEFINED");
   break;
  case VT_LPSTR:
   strRet = _T("VT_LPSTR");
   break;
  case VT_LPWSTR:
   strRet = _T("VT_LPWSTR");
   break;
  case VT_FILETIME:
   strRet = _T("VT_FILETIME");
   break;
  case VT_BLOB:
   strRet = _T("VT_BLOB");
   break;
  case VT_STREAM:
   strRet = _T("VT_STREAM");
   break;
  case VT_STORAGE:
   strRet = _T("VT_STORAGE");
   break;
  case VT_STREAMED_OBJECT:
   strRet = _T("VT_STREAMED_OBJECT");
   break;
  case VT_STORED_OBJECT:
   strRet = _T("VT_STORED_OBJECT");
   break;
  case VT_BLOB_OBJECT:
   strRet = _T("VT_BLOB_OBJECT");
   break;
  case VT_CF:
   strRet = _T("VT_CF");
   break;
  case VT_CLSID:
   strRet = _T("VT_CLSID");
   break;
 }
 WORD vt = var.vt;
 if(vt & VT_ARRAY){
  vt = vt & ~VT_ARRAY;
  strRet = _T("Array of ");
 }
 if(vt & VT_BYREF){
  vt = vt & ~VT_BYREF;
  strRet += _T("Pointer to ");
 }
 if(vt != var.vt){
  switch(vt){
   case VT_EMPTY:
    strRet += _T("VT_EMPTY");
    break;
   case VT_NULL:
    strRet += _T("VT_NULL");
    break;
   case VT_I2:
    strRet += _T("VT_I2");
    break;
   case VT_I4:
    strRet += _T("VT_I4");
    break;
   case VT_R4:
    strRet += _T("VT_R4");
    break;
   case VT_R8:
    strRet += _T("VT_R8");
    break;
   case VT_CY:
    strRet += _T("VT_CY");
    break;
   case VT_DATE:
    strRet += _T("VT_DATE");
    break;
   case VT_BSTR:
    strRet += _T("VT_BSTR");
    break;
   case VT_DISPATCH:
    strRet += _T("VT_DISPATCH");
    break;
   case VT_ERROR:
    strRet += _T("VT_ERROR");
    break;
   case VT_BOOL:
    strRet += _T("VT_BOOL");
    break;
   case VT_VARIANT:
    strRet += _T("VT_VARIANT");
    break;
   case VT_UNKNOWN:
    strRet += _T("VT_UNKNOWN");
    break;
   case VT_I1:
    strRet += _T("VT_I1");
    break;
   case VT_UI1:
    strRet += _T("VT_UI1");
    break;
   case VT_UI2:
    strRet += _T("VT_UI2");
    break;
   case VT_UI4:
    strRet += _T("VT_UI4");
    break;
   case VT_I8:
    strRet += _T("VT_I8");
    break;
   case VT_UI8:
    strRet += _T("VT_UI8");
    break;
   case VT_INT:
    strRet += _T("VT_INT");
    break;
   case VT_UINT:
    strRet += _T("VT_UINT");
    break;
   case VT_VOID:
    strRet += _T("VT_VOID");
    break;
   case VT_HRESULT:
    strRet += _T("VT_HRESULT");
    break;
   case VT_PTR:
    strRet += _T("VT_PTR");
    break;
   case VT_SAFEARRAY:
    strRet += _T("VT_SAFEARRAY");
    break;
   case VT_CARRAY:
    strRet += _T("VT_CARRAY");
    break;
   case VT_USERDEFINED:
    strRet += _T("VT_USERDEFINED");
    break;
   case VT_LPSTR:
    strRet += _T("VT_LPSTR");
    break;
   case VT_LPWSTR:
    strRet += _T("VT_LPWSTR");
    break;
   case VT_FILETIME:
    strRet += _T("VT_FILETIME");
    break;
   case VT_BLOB:
    strRet += _T("VT_BLOB");
    break;
   case VT_STREAM:
    strRet += _T("VT_STREAM");
    break;
   case VT_STORAGE:
    strRet += _T("VT_STORAGE");
    break;
   case VT_STREAMED_OBJECT:
    strRet += _T("VT_STREAMED_OBJECT");
    break;
   case VT_STORED_OBJECT:
    strRet += _T("VT_STORED_OBJECT");
    break;
   case VT_BLOB_OBJECT:
    strRet += _T("VT_BLOB_OBJECT");
    break;
   case VT_CF:
    strRet += _T("VT_CF");
    break;
   case VT_CLSID:
    strRet += _T("VT_CLSID");
    break;
  }
 }
 return strRet;
}