?? compactmdb.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 + -