[Résolu] [Visual C++] Problème ADO Access violation
Bonjour j'ai un problème épineux mais certainement possible à résoudre. voilà j'ai une classe "Database" qui permet d'ouvrir une base de donnée, des tables de manipuler tout cela etc voilà le code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
bool Database::Open(char* UserName, char* Pwd,char* CnnStr)
{
try
{
HRESULT hr;
hr = m_Cnn.CreateInstance( __uuidof( ADODB::Connection ) );
m_Cnn->Open(CnnStr, UserName, Pwd, NULL);
}
CATCHERROR(m_Cnn,0)
sprintf(m_ErrStr,"Success");
return 1;
}
bool Database::OpenTbl(int Mode, char* CmdStr, Table &Tbl)
{
if(m_Cnn==NULL)
{
Tbl.m_Rec=NULL;
sprintf(m_ErrStr,"Invalid Connection");
return 0;
}
RecPtr t_Rec=NULL;
try
{
t_Rec.CreateInstance( __uuidof( ADODB::Recordset ) );
t_Rec->Open(CmdStr,_variant_t((IDispatch *) m_Cnn, true),ADODB::adOpenStatic,ADODB::adLockOptimistic,Mode);
}
CATCHERROR(Tbl.m_Rec,0)
Tbl.m_Rec=t_Rec;
sprintf(m_ErrStr,"Success");
return 1;
}
bool Database::Close()
{
if(m_Cnn==NULL)
return 0;
try
{
m_Cnn->Close();
m_Cnn=NULL;
}
catch(_com_error &e)
{
return 0;
}
return 1;
} |
et la partie importante code client
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| if(! db.Open("","", AllAql.szDBFile))
{
ioError << "Erreur ACCESS : " << db.m_ErrStr << endl ;
bContinue = FALSE ;
}
else
{
if(! db.OpenTbl(ADODB::adCmdTable, "OPTIMISATION", tblOptimisation))
{
ioError << "Erreur ACCESS : Impossible d'accéder à la table OPTIMISATION" << endl ;
bContinue = FALSE ;
}
db.Close();
return 1;
}
} |
Cela plante avec le message d'erreur suivant :
Unhandled exception in AASeq.exe (MSDART.Dll) : 0xC0000005 : access violation
par contre si je met db.close; return 1 ; avant l'ouverture d'une table cela ferme bien.
Quelqu'un peut m'aider?
merci!
IRNBRU