access中有没有语句可以压缩数据库?(50分)

S

songhb

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个access数据库,将其中所有数据都删除,还有30多M,
执行access2000菜单中的压缩数据库命令后,只有100多k了,
那么我能不能在access中执行语句来压缩,而不用菜单命令压缩?
 
可以自己写程序来压缩
具体代码不久前已经有人贴过了
你查一下就能查到。
 
转贴:
uses
JRO_TLB;


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;


procedure button1click(Sender: TObject);
var
s: string;
begin
try
adoconnection1.Connected := false;
s := extractfilepath(application.ExeName) + '你的mdb名称';
if CompactAndRepair(s, 'tmp.mdb') then
begin
deletefile(s);
renamefile('tmp.mdb', s);
end;
finally
adoconnection1.Connected := true;
end;
end;

//JRO_TLB需要安装:project->import type library;在弹出的窗口中选中“microsoft jet and replication objects 2.1 libyary”,点install安装即可
 
多地有解释,不详细说,看下面的语句应该可以了
var dao:OLEVariant;
dao := CreateOleObject('DAO.DBEngine.36');
dao.CompactDatabase(database.DatabaseName, tempfile, '', 0, ';pwd=xxx')
xxx为密码,无密码dao.CompactDatabase(database.DatabaseName, tempfile)
再删除原文件,将tempfile改名为DatabaseName
 
多人接受答案了。
 
顶部