首頁 > 資訊科技 > Delphi開發 > 如何壓縮Access資料庫
2008
04-19

如何壓縮Access資料庫

access檔筆數越來越大時,速度越跑越慢,由於access只是暫存的資料,所以要清空,但是清完之後檔案一樣50mb,原來還需要壓縮,後來到Delphi K.top,找到了一篇教學,整理歸納之後終於成功了。
Step1.  先 在功能選單 [Project]->[Import Type Libary]->[Microsoft Jet and Replication Objects 2.6 Libary (Version 2.6)]->[Install]將它import進來。

Step2. 接著記得要 user JRO_TLB;

Step3.

[delphi]{-------------------------------------------------------------------------------
程序名稱: Tform1.CompactDatabase
作 者: Delphi K.top , ha0009
日 期: 2008.01.20
傳 入 值: DatabaseName , Password : string
返 回 值: 無
-------------------------------------------------------------------------------}
procedure Tform1.CompactDatabase(DatabaseName{完整的資料庫名稱路徑}, Password : string {資料庫密碼});
const
BaseSrc = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s';
var
JetEngine : IJetEngine; {需要 Import Type Library msjro.DLL}
Path : String;
TmpName : array[0 .. Max_Path] of Char;
begin
randomize;
Path := ExtractFilePath (DatabaseName);
if GetTempFileName (PChar (Path), Nil, 0, TmpName) = 0 then begin
StrCopy (TmpName, PChar (format (path + '%x', [trunc (random (65535))])));
end else begin
DeleteFile (TmpName);
end;
JetEngine := CoJetEngine.Create;
try
JetEngine.CompactDatabase(format (BaseSrc, [DatabaseName, Password]), format (BaseSrc, [TmpName, Password]));
if DeleteFile (DatabaseName) {刪除舊的資料庫} then begin
if MoveFile (TmpName, PChar (DatabaseName)) {將新的資料庫移到指定目錄} then
ShowMessage (format ('%s 資料庫壓縮成功。', [DatabaseName]))
else
ShowMessage (format ('%s 無法改名為 %s,請自行改名。', [TmpName, ExtractFileName (DatabaseName)]));
end else
ShowMessage (format ('%s 刪除失敗,請自行刪除並將 %s 改名成 %s。', [DatabaseName, ExtractFileName (TmpName), ExtractFileName (DatabaseName)]));
finally
JetEngine := nil;
end;
end;
[/delphi]

Step4. 使用範例
CompactDatabase(DatabaseName{完整的資料庫名稱路徑}, Password : string {資料庫密碼});
範例 CompactDatabase('D:ProjectClearAccessTest.mdb', '1234');
記得資料庫要先關閉,以免無法壓縮唷。

最後修改日:
作者:蔡 小翰

常見問題:

  1. 文章可以轉貼嗎?可以,不過請要註明出處並標示本站連結。
  2. 載點可以轉貼嗎?可以,歡迎隨意盜連,無須告知。
  3. 反盜版聲明:本站支持正版軟體,請勿討論破解版、快樂版、註冊碼、註冊機、序號...等違法主題。
  4. 檔案無法解壓縮或解壓縮時發生錯誤?請使用7-Zip解壓縮
  5. 更多細節請參閱使用條款及免責聲明


發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料