uses dao97,dao2000;
procedure CompactMdbDatabase(srcDbname,dstDbname,oldpwd,newpwd:string;bAccess97:boolean=true);
var idbEngine:_dbEngine;
begin
if oldpwd <>'' then oldpwd := ';pwd='+oldpwd;
if newpwd <>'' then newpwd := ';pwd='+newpwd;
if bAccess97 then
begin
idbengine := CreateComObject(dao97.CLASS_DBEngine) as _DBEngine;
idbEngine.CompactDatabase(srcDbname,dstDbname,newpwd,dbVersion30,oldpwd);
end else
begin
idbengine := CreateComObject(dao2000.CLASS_DBEngine) as _DBEngine;
idbEngine.CompactDatabase(srcDbname,dstDbname,newpwd,dbVersion40,oldpwd);
end;
end;
以上的是在网上流传已久的压缩方法;它是调用的第三方组件来完成的,自己根据一些ASP的资料,写了下面的一种方法! 这种是通过MS提供的COM组件来完成,而且对系统有要求,只有NT内核的系统才提供了些组件,非NT的就需要自行安装!
Var
MyObject:Variant;
OldData,NewData:String;
begin
MyObject:=CreateOleObject('JRO.JetEngine');
OldData:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+'d:/test1.mdb';
NewData:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+'d:/test2.mdb';
MyObject.CompactDatabase(OldData,NewData);
end;
当然,这个COM组件也还提供了其它的很多功能,可以通过对它的DLL分析得到它的其它功能!
delphi压宿Access数据库
最新推荐文章于 2020-07-14 20:46:00 发布