⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compactmdb.pas

📁 短小而实用的房地产销售管理软件
💻 PAS
字号:
Unit CompactMDB;

Interface
Uses
   Windows, SysUtils, Math, ComObj, shellapi, Shlobj;
Function CompactDatabase(Const AFileName, APassWord: String): Boolean;
Implementation

Function CompactDatabase(Const AFileName, APassWord: String): Boolean;
Const
   SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
      + 'Jet OLEDB:Database Password=%s;';
Var
   SPath            : String;
   SFile            : Array[0..254] Of char;
   STempFileName    : String;
   JE               : OleVariant;

   Function GetTempDir: String;
   Var
      Buffer        : Array[0..MAX_PATH] Of char;
   Begin
      ZeroMemory(@Buffer, MAX_PATH);
      GetTempPath(MAX_PATH, Buffer);
      result := IncludeTrailingBackslash(StrPas(Buffer));
   End;

Begin
   result := false;
   SPath := GetTempDir;                 //取得Windows的Temp路径
   GetTempFileName(pchar(SPath), '~ACP', 0, SFile);
          //取得Temp文件名,Windows将自动建立0字节文件
   STempFileName := SFile;              //PChar->String
   If Not DeleteFile(STempFileName) Then Exit; //删除Windows建立的0字节文件
   Try
      JE := CreateOleObject('JRO.JetEngine');
               //建立OLE对象,函数结束OLE对象超过作用域自动释放
      OleCheck(JE.CompactDatabase(Format(SConnectionString, [AFileName,
         APassWord]),
            Format(SConnectionString, [STempFileName, APassWord])));
                         //压缩数据库
        //复制并覆盖源数据库文件,如果复制失败则函数返回假,压缩成功但没有到函数的功能
      result := CopyFile(pchar(STempFileName), pchar(AFileName), false);
      DeleteFile(STempFileName);        //删除临时文件
   Except
        //压缩失败
   End;
End;

End.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -