有没有方法在DELPHI的程序中直接压缩ASESS数据库?(100分)

  • 主题发起人 zhoudang
  • 开始时间
Z

zhoudang

Unregistered / Unconfirmed
GUEST, unregistred user!
有没有方法在DELPHI的程序中直接压缩ASESS数据库?谢了!
 
procedure TMainForm.CompactDatabases;
var
Dao: OLEVariant;
begin
//首先应该关闭当前数据库的连接
Screen.Cursor:=crHourGlass;
Dao:=CreateOleObject('DAO.DBEngine.36');
Dao.CompactDatabase('路径'+'/数据库.mdb','路径'+'/new.mdb');
DeleteFile('路径'+'/数据库.mdb');
RenameFile('路径'+'/new.mdb','database.mdb');
Screen.Cursor:=crDefault;
//新版的DAO取消的修复数据库的功能
end;
用DAO的方式,不过得保证你的系统中有DAO3.6改成3.5的也可以,不过就不能
压缩ACCESS2000的数据库了。
 
原创
在Delphi中用ADO压缩Access数据库之不引用JRO类型库方法
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1268352
 
可以设置Access退出时压缩数据库。程序关闭数据库时自动压缩.[:D]
 
var
CompactAccess:OleVariant;
begin
//首先应该关闭当前数据库的连接
//if conn.state=1 then conn.close;
CompactAccess:=CreateOleObject('JRO.jetEngine');
CompactAccess.CompactDatabase(connstr,'Provide=Microsoft.Jet.OLEDB.4.0;data source='+databaseName+'.bak;Jet OLEDB:Encrypt Database=true');
deletefile(DatabaseName);
renameFile(DatabaseName+'.bak',DatabaseName);
 
顶部