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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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