AccessのMDBファイルは、使っていくうちにファイルサイズが肥大化するため最適化する必要がある。以下、Delphiプログラムで最適化を行う方法。
コンポーネントのインポートで、Microsoft Jet and Replication Objectsをインポートする。インポートしたら以下の方法で最適化できる。
uses JRO_TLB; //インポートしたライブラリ
...
procedure CompMDB(const FileName: string);
var
JE: IJetEngine;
Path, OnlyFname, NewFile, OldFile: string;
begin
Path := ExtractFileDir(FileName);
OnlyFname := ChangeFileExt(ExtractFileName(FileName), '');
NewFile := Path + '\' + OnlyFname + '_new.mdb';
OldFile := Path + '\' + OnlyFname + '_old.mdb';
JE := coJetEngine.Create;
if FileExists(NewFile) then
DeleteFile(NewFile);
JE.CompactDatabase('Data Source=' + FileName,
'Data Source=' + NewFile);
if FileExists(OldFile) then
DeleteFile(OldFile);
if FileExists(FileName) then
DeleteFile(FileName);
RenameFile(NewFile,FileName);
end;
タイプライブラリを使うにはいろいろな方法があるが、ここではインターフェイスを使った。