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
------------------------------- Réponse au message : -------------------------------
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
|