Mi problema es el siguiente:Tengo una BD de ACCESS2000 que se ha corrompido. Al abrirla con el ACCESS me dice que si la quiero reparar, le digo que si y me la repara, creandome una tabla con los errores que ha encontrado.Bien, hasta aqui perfecto. Cuando intento hacer lo mismo pero desde codigo, me dice que no reconoce el formato, dandome el error -2147467259.
El codigo que uso me compacta las BD siempre que no esten corruptas, si estan corruptas pasa de todo. Alguien sabe porque...???
Mi codigo resumido es:
TCOMIJetEngine JetEngine;
AnsiString sSource,
sDest;
bool Reparar=false;
try{
CoInitialize(NULL);
JetEngine = CoJetEngine::Create();
sSource="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sNombre_BD_Origen;
sDest="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sNombre_BD_Destino;
HRESULT HResultado=JetEngine.CompactDatabase(WideString(sSource), WideString(sDest));
if (HResultado ==0)
{
::DeleteFile(sNombre_BD_Origen.c_str());
::RenameFile(sNombre_BD_Destino,sNombre_BD_Origen);
CoUninitialize();
}
catch(Exception *Error)
{
if (dynamic_cast<EOleException*>(Error)!=0)
return ((EOleException*)Error)->ErrorCode;
else return HResultado;
}