bool CompactAccessDatabase(WideString MDB, WideString Password)
{
AnsiString TMP = ExtractFilePath(MDB);
if (TMP == "")
TMP = GetCurrentDir();
TMP = TMP + AnsiString(DY_APPNAME) + "_$$$.MDB";
if (FileExists(TMP))
DeleteFile(TMP);
WideString Provider1 = WideString("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=") + MDB +
WideString(";Jet OLEDB:Database Password=") + Password;
WideString Provider2 = WideString("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=") + TMP +
WideString(";Jet OLEDB:Database Password=") + Password;
Variant AdoObj = Variant::CreateObject("JRO.JetEngine");
AdoObj.OleProcedure("CompactDatabase", Provider1, Provider2);
AdoObj.Clear(); // 释放ADO对象
if (DeleteFile(MDB))
{
RenameFile(TMP, MDB);
return true;
}
return false;
}