网上文摘 小说 Flash游戏 最近更新 下载排行 资源分类 下载指南
经典编程资源 精彩不容错过
设为首页
加入收藏
联系我们
当前位置:Delphi园地技巧文章数据库编程 → 利用ADO压缩与修复Access2000
利用ADO压缩与修复Access2000
日期:2004年12月12日 作者:clilq 人气: 查看:[大字体 中字体 小字体]
上次发表了一篇关于压缩和修复MS Access 2000文件的文章,得到网友的好评,在此深表感谢。下面再奉献一篇利用 ADO 压缩和修复MS Access 2000文件的文章,希望能对您有所帮助。

首先定义一个函数:

function TForm1.compressdatabase:boolean;
const  
sProvider = 'Provider=Microsoft.Jet.OLEDB.4.0;';
var  
sOldMDB,sNewMDB:string;  
MyObj:variant;
begin  
result:=false;  
OldFileName:='Delphi资料库.mdb';  
NewFileName:='Delphi资料库.mdb1';  
sOldMDB := sProvider + 'Data Source=' + OldFileName;  
sNewMDB := sProvider + 'Data Source=' + NewFileName;  
MyObj:=createoleobject('jro.jetengine.2.1');  
try    
try        
MyObj.CompactDatabase(sOldMDB, sNewMDB);      
result:=true;    
except        
result:=false;        
MyObj:=null;    
end;  
finally      
MyObj:=null;  
end;
end;



调用示例:


Var   OldFileName,NewFileName:string;   //全局变量procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin   ADOConnection1.Connected :=false;  //调用之前必须先关闭数据库连接   if not n1.Checked then exit;       //假若“关闭时压缩数据库”为假,则退出   try      if not CompressDatabase then begin        ShowMessage('   压缩数据库失败!   ');        exit      else  ShowMessage('   压缩数据库成功!   ');      if DeleteFile(OldFileName) then         RenameFile(NewFileName,OldFileName);      else ShowMessage('不能重命名文件');   finally//      OldFileName:='';//      NewFileName:='';   end;end;



注意:
1- 在你的uses语句中必须加入ComCtrls单元。

2- 在压缩的过程中,其它人不能打开或使用数据库。

3- 修复压缩数据库时,若出现“类字符串无效”。
   原 因 是:用户计算机中没有或者未注册“MSJRO.DLL”文件。
   解决办法:若$(system)目录中没有上述文件,则复制该文件到$(system)目录下;若$(system)目录有上述文件,那么在$(system)目录下执行下列命令:
                                          regsvr32 MSJRO.dll
   若还出现“类字符串无效” 请尝试将“MyObj:=createoleobject('jro.jetengine.2.1');”一句改为:
              MyObj:=createoleobject('jro.jetengine');
   注:$(system)目录,即为用户计算机中操作系统的系统目录。如:“C:\Windows\System” 。
2003-5-29 18:29:00   
 2003-5-29 18:32:42    压缩和修复MS Access 2000文件

我们知道,由于使用内部高速缓存和临时缓冲区,MS Access文件随着使用时间快速增加。这些多余的空间的浪费远超出它对性能的影响,并且备份时会需要很大的空间。解决它的办法是压缩,通过选择Access 2000的菜单“工具->数据库实用工具->压缩和修复数据库”完成,或者也可以在你的Delphi程序中完成。


procedure TMainFrm.CompressDB;
var  
DaoVar: OLEVariant;
begin  
screen.Cursor :=crHourGlass;  
if dmfrm.ADOConnection1.Connected then      dmfrm.ADOConnection1.Connected :=false;  
try      
DaoVar := CreateOleObject('DAO.DBEngine.36');      
if FileExists('misdbnew.mdb') then deletefile('misdbnew.mdb'); //删除文件“misdbnew.mdb”      

DaoVar.CompactDatabase('MisDB.mdb','misdbnew.mdb');//压缩“misdb.mdb” 到”misdbnew.mdb“      

if deletefile('MisDB.mdb') then                    //删除文件“misdb.mdb”      RenameFile('misdbnew.mdb','MisDB.mdb');           //将“misdbnew.mdb”改名为”misdb.mdb“  

finally    
screen.Cursor :=crDefault;  
end;
end;



注意:
1- 在你的uses语句中必须加入ComCtrls单元。

2- 在压缩的过程中,其它人不能打开或使用数据库。

3- 修复压缩数据库时,若出现“类字符串无效”。
   原 因 是:用户计算机中没有或者未注册“DAO360.DLL”文件。
   解决办法:若$(system)目录中没有上述文件,则复制该文件到$(system)目录下;若$(system)目录有上述文件,那么在$(system)目录下执行下列命令:
   regsvr32 dao360.dll
   注:$(system)目录,即为用户计算机中操作系统的系统目录。如:“C:\Windows\System” 。

(出处:www.delphibbs.com)

相关文章:
·ACCESS技巧集
·ACCESS加密
·ACCESS编程技巧
·加密Access数据库
·连接带密码的Access数据库
·代码建立Access数据库
·用SQL语句创建Access表
·动态创建与压缩Access数据库
·用Delphi标准控件实现Access数据库的导入导出
·浅谈ACCESS数据库升迁SQLSERVER注意事项
 → 特别推荐
 → 热点TOP10
关于我们 | 广告服务 | 发布资源 | 联系站长 Copyright © 2002-2006 Delphi园地 All Rights Reserved