This is a short sample:
#include <stdio.h>
#include <afxdisp.h>
#import "c:\program files\common files\system\ado\msado15.dll" rename ("EOF","adoEOF"

no_namespace
#define CREATEiNSTANCE(sp,riid) { HRESULT _hr =sp .CreateInstance( __uuidof( riid ) ); if (FAILED(_hr)) _com_issue_error(_hr); }
#define RsITEM(rs,x) rs->Fields->Item[_variant_t(x)]->Value
#define UC (char *)
struct InitOle {
InitOle() { ::CoInitialize(NULL); }
~InitOle() { ::CoUninitialize(); }
} _init_InitOle_; // Global Instance to force load/unload of OLE
void main(){
_RecordsetPtr spRS;
_ConnectionPtr spCON;
try{
CREATEiNSTANCE(spCON,Connection);
spCON->ConnectionString = L"driver={sql server};SERVER=(local);Database=pubs;"
L"UID=sa; PWD=;";
spCON->ConnectionString =L"DRIVER={Microsoft Access Driver (*.mdb)};"
L"DBQ=authors.MDB;DefaultDir=C:\\test;";
spCON->Open( "", "", "", -1 );
CREATEiNSTANCE(spRS,Recordset)
spRS->PutRefActiveConnection( spCON );
spRS->Open("select au_lname, au_fname from authors", vtMissing, adOpenKeyset,
adLockBatchOptimistic, -1);
while(spRS->adoEOF == false){
printf("au_lname = %s au_fname = %s \n", UC _bstr_t(RsITEM(spRS,0L)),
UC _bstr_t(RsITEM(spRS,"au_fname"

));
spRS->MoveNext();
}
spRS->Close();
spCON->Close();
}
catch( _com_error &e){
_bstr_t bstrSource(e.Source());
_bstr_t bs = _bstr_t(" Error: "

+ _bstr_t(e.Error()) + _bstr_t(" Msg: "
+ _bstr_t(e.ErrorMessage()) + _bstr_t(" Description: "
+ _bstr_t(e.Description());
MessageBox(0,bs,bstrSource, MB_OK);
}
}
#undef UC
Ion Filipski
ICQ: 95034075
AIM: IonFilipski
filipski@excite.com