轉(zhuǎn)自(http://blog.sina.com.cn/s/blog_4a8552f801008ilq.html)
MS Access 2000的數(shù)據(jù)庫(kù)文件
在使用MS Access 2000的過程中,我們發(fā)現(xiàn)隨著時(shí)間的推移,由于Access會(huì)給數(shù)據(jù)庫(kù)自動(dòng)保留一份副本集,這樣造成了數(shù)據(jù)庫(kù)占用的空間越來越大。如果在Access環(huán)境中,我們可以通過點(diǎn)選菜單(工具-數(shù)據(jù)庫(kù)實(shí)用工具-壓縮和修復(fù)數(shù)據(jù)庫(kù)),來將Access數(shù)據(jù)庫(kù)壓縮。那么通過Delphi能不能壓縮和修復(fù) Access數(shù)據(jù)庫(kù)呢?答案是肯定的。利用下面的這個(gè)函數(shù),成功的實(shí)現(xiàn)了實(shí)現(xiàn)這個(gè)功能。代碼如下:
Function CompactAndRepair(sOldMDB : String; sNewMDB : String) : Boolean;
const
sProvider = 'Provider=Microsoft.Jet.OLEDB.4.0;';
var
oJetEng : JetEngine;
begin
sOldMDB := sProvider + 'Data Source=' + sOldMDB;
sNewMDB := sProvider + 'Data Source=' + sNewMDB;
try
oJetEng := CoJetEngine.Create;
oJetEng.CompactDatabase(sOldMDB, sNewMDB);
oJetEng := Nil;
Result := True;
except
oJetEng := Nil;
Result := False;
end;
end;
使用該函數(shù)的例子如下:
if CompactAndRepair('d:\db\Old.mdb', 'd:\db\New.mdb') then
ShowMessage('操作成功')
else
ShowMessage('操作失敗');
應(yīng)注意的是,在壓縮和修復(fù)數(shù)據(jù)庫(kù)的過程中,不能有其它的操作打開該數(shù)據(jù)庫(kù),否則操作會(huì)失敗。
另外,要想上面的函數(shù)編譯通過,你需要先把Microsoft Jet and Replication Objects 2.1 Library導(dǎo)入到Delphi中,步驟如下:
1、在Delphi集成開發(fā)環(huán)境中,點(diǎn)選菜單(Project-Import Type Library)。
2、在彈出的對(duì)話框中,移動(dòng)滾動(dòng)條,找到Microsoft Jet and Replication Objects 2.1 Library。
3、點(diǎn)擊Install按鈕。
然后把JRO_TLB單元添加到你的Delphi應(yīng)用程序中的Uses單元。好了,運(yùn)行程序試一下吧,數(shù)據(jù)庫(kù)文件是不是小了好多呢?
posted on 2010-02-04 14:48
無聲 閱讀(1054)
評(píng)論(0) 編輯 收藏 所屬分類:
職場(chǎng)生活