MDBファイルを最適化する

MDAC 2.1からJROでMDBを最適化できるようになっていたようだ。

Delphi XEを使って、次のコードでMDBファイルを最適化できた。

uses ComObj;

/// <summary>MDBファイルを最適化する</summary>
/// <param name="SourceMdbPath">最適化するMDBファイルのバス</param>
/// <param name="SourceMdbPassword">最適化するMDBファイルのパスワード</param>
/// <param name="TargetMdbPath">最適化したMDBファイルのバス</param>
/// <param name="TargetMdbPassword">最適化したMDBファイルのパスワード</param>
procedure CompactMdb(
  SourceMdbPath, SourceMdbPassword,
  TargetMdbPath, TargetMdbPassword: String);
const
  SOURCE_PARAM = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s';
  TARGET_PARAM = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Engine Type=%d;Jet OLEDB:Database Password=%s';
  ENGINE_TYPE = 5; //Jet OLEDB:Engineの種類 
var
  Engine: OleVariant;
  SourceStr, TargetStr: String;
begin
  SourceStr := Format(SOURCE_PARAM, [SourceMdbPath, SourceMdbPassword]);
  TargetStr := Format(TARGET_PARAM, [TargetMdbPath, ENGINE_TYPE, TargetMdbPassword]);
  Engine := ComObj.CreateOleObject('JRO.JetEngine');
  Engine.CompactDatabase(SourceStr, TargetStr);
end;

//C:\mdb\old.mdbを最適化したファイルをC:\mdb\new.mdbに作成する
//C:\mdb\old.mdbのパスワードは'pass1'
//C:\mdb\new.mdbのパスワードは'pass2'
CompactMdb('C:\mdb\old.mdb', 'pass1','C:\mdb\new.mdb', 'pass2');

参考

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です