Compacter une base

Signaler
Messages postés
10
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
12 septembre 2002
-
Messages postés
9
Date d'inscription
mardi 13 août 2002
Statut
Membre
Dernière intervention
2 septembre 2002
-
Bjr,
j'ai une base access ainsi qu'un lien odbc sur celle-ci

j'aimerais savoir comment compacter cette base à l'éxécution.

merci d'avance
Yv

1 réponse

Messages postés
9
Date d'inscription
mardi 13 août 2002
Statut
Membre
Dernière intervention
2 septembre 2002

Via ODBC, je sais pas mais en ADO tu peux faire ça :

uses db, ComObj, DAO35_TLB;
Type
TOperation =(opError, opSuccess, opNotApplicable);

Function CompactAccessDataBase(Alias : String) : TOperation;
Var
varDBEngine : DBEngine;
strDBPathName,
strTempPathName: string;
Begin
Screen.Cursor :=crHourGlass;
Result := opError;
if IsAccessDatabase(Alias) then Begin
Result := opSuccess;
Try
strDBPathName := GetDatabasePath(Alias);
strTempPathName := ExtractFilePath(strDBPathName)+'temp.mdb';
varDBEngine := CoDBEngine.Create;
Try
varDBEngine.CompactDatabase(strDBPathName,strTempPathName, Null, Null, Null);
DeleteFile(strDBPathName);
RenameFile(strTempPathName, strDBPathName);
Except
Result := opError;
Raise EDatabaseError.Create('Compactage impossible, la base est peut etre ouverte par un autre opérateur');
End;
Finally
Screen.Cursor:=crDefault;
// varDBEngine.Free;
End;
End Else Result := opNotApplicable;
End; // CompactAccessDataBase