不用DAO 用JRO ADO不支持压缩我的代码: try b.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +db_source,'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +db_target); if replace then begin if deletefile(pchar(db_source)) then result:=renamefile(db_target,db_source) else result:=false; end else result:=true; except result:=false; end;
呵呵,谁说ADO不支持压缩,那是delphi 的ADOExpress没提供接口罢了。告诉你个简单的办法, 打开你的delphi->project->Import type libaray 找到 microsoft Jet and Repliaction Object 2.5 (就是JRO) Install 了他 然后看你的Activex空间面板会多出2个控件,有一个就是JetEngin 这个就是大家想用的JRO, 把它拖到form上 写代码 JetEngin1.CompactDatabase(xxxxx) 剩下的你就会了,参数和上面说得差不多了Provider=Microsoft.Jet.OleDB.4.0;Data Source=d:ComTestmyDb.mdb;Jet OLEDB:Engine Type=5;Locale Identifier=0x0804;Jet OLEDB:Database Password=mypwd;看看这两个帖子http://www.csdn.net/expert/topic/791/791528.xml?temp=.7135736 http://www.csdn.net/expert/topic/837/837602.xml?temp=.8422968
uses ....,ComObj;
..
..procedure Tfm_main.Compact;
var dao:OLEVariant;
begin
adoconnection.Close;
screen.Cursor:=crHourGlass;
dao:=CreateOleObject('DAO.DBEngine.36');
dao.CompactDatabase(getcurrentdir+'/data.mdb',getcurrentdir+'/new.mdb');
DeleteFile(getcurrentdir+'/data.mdb');
RenameFile(getcurrentdir+'/new.mdb','data.mdb');
adoconnection.Open;
screen.Cursor:=crDefault;
application.MessageBox('成功压缩数据库','提示',mb_ok+mb_iconinformation);
end;
我怎样才能看到dbEngine的状态?什么资料上有介绍?
谢谢!
你能执行到 db.Close 那就说明上面的函数已经结束了。
你看看别的问题吧。另外,现在ADO的引擎比DAO好得多,为啥不用?
能给一个用ADO来进行压缩的例子吗?
用JRO
ADO不支持压缩我的代码: try
b.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
+db_source,'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
+db_target);
if replace then
begin
if deletefile(pchar(db_source)) then
result:=renamefile(db_target,db_source)
else
result:=false;
end
else
result:=true;
except
result:=false;
end;
打开你的delphi->project->Import type libaray
找到 microsoft Jet and Repliaction Object 2.5 (就是JRO)
Install 了他
然后看你的Activex空间面板会多出2个控件,有一个就是JetEngin
这个就是大家想用的JRO,
把它拖到form上
写代码
JetEngin1.CompactDatabase(xxxxx)
剩下的你就会了,参数和上面说得差不多了Provider=Microsoft.Jet.OleDB.4.0;Data Source=d:ComTestmyDb.mdb;Jet OLEDB:Engine Type=5;Locale Identifier=0x0804;Jet OLEDB:Database Password=mypwd;看看这两个帖子http://www.csdn.net/expert/topic/791/791528.xml?temp=.7135736
http://www.csdn.net/expert/topic/837/837602.xml?temp=.8422968