利用ADO压缩和修复MSAccess2000数据库 下载本文

利用ADO压缩和修复MSAccess2000数据库

上次发表了一篇关于压缩和修复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” 。