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数据库
最新推荐文章于 2026-05-06 08:16:52 发布
博客介绍了两种Access数据库的压缩方法。一种是调用第三方组件完成的流传已久的方法,另一种是通过MS提供的COM组件实现的方法,该方法对系统有要求,仅NT内核系统提供组件,非NT系统需自行安装,还提到可分析其DLL获取更多功能。
358

被折叠的 条评论
为什么被折叠?



