Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Datenbanken (https://www.delphipraxis.net/22-library-datenbanken/)
-   -   Delphi Access Datenbank komprimieren (https://www.delphipraxis.net/46790-access-datenbank-komprimieren.html)

delphipitti 31. Mai 2005 16:38


Access Datenbank komprimieren
 
Hallo an alle.

Da ich selbst schon vergeblich nach der Möglichkeit eine Access-Datenbank zu komprimieren gesucht habe, und zufälligerweise jetzt einen Weg gefunden habe, möchte ich ihn gern an andere Suchende weitergeben! Ich hoffe das es dem ein oder anderen weiterhilft :wink:

Hier nun der Source:

Delphi-Quellcode:
const
  SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
    +'Jet OLEDB:Database Password=%s;';

//erzeugt einen relativen Temp-Pfad zum Zwischenspeichern
function GetTempPathFileName(): string;
var
  SPath,SFile:array [0..254] of char;
begin
  GetTempPath(254,SPath);
  GetTempFileName(SPath,'~SM',0,SFile);
  result:=SFile;
  DeleteFile(result);
end;

//Funktion zum Komprimieren der DB inkl. Passwort
function CompactDatabase(AFileName,APassWord:string):boolean;
var
  STempFileName:string;
  vJE:OleVariant;
begin
  STempFileName:=GetTempPathFileName;
  try
    vJE := CreateOleObject('JRO.JetEngine');
    vJE.CompactDatabase(format(SConnectionString, [AFileName, APassWord]), format(SConnectionString, [STempFileName, APassWord]));
    result:=CopyFile(PChar(STempFileName), PChar(AFileName), false);
    DeleteFile(STempFileName);
  except
    result:=false;
  end;
end;

//Aufruf
CompactDatabase(ExtractFilePath(Application.ExeName)+'Datenbank.mdb', 'Passwort');
Ich hoffe es hilft irgendjemand weiter...

Viele Grüße, delphipitti :coder:

[edit=Chakotay1308]Code lesbar gemacht. Mfg, Chakotay1308[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz