您的位置:首页 > 其它

JRO-CompactDataBase

2016-03-25 10:30 369 查看
{$R *.dfm}

uses Registry,ComObj;

procedure TForm1.Button1Click(Sender: TObject);

var Reg:TRegistry;

Jro:OleVariant;

p,f:array[0..Max_Path] of Char;

ConnStr:String;

AccessComp:String;

begin

//使用JRO,必须确定安装了MDAC

Reg:=TRegistry.Create;

try

Reg.RootKey:=HKey_Local_Machine;

if not Reg.OpenKey('\SoftWare\Microsoft\DataAccess',False) then

begin

MessageDlg('MDAC Not Installed.',mtError,[mbOK],0);

Reg.CloseKey;

Exit;

end;

Reg.CloseKey;

finally

Reg.Free;

end;

//ShowmessageFmt('%d,%d',[Length(p),Sizeof(p)]); {261,522}

Windows.GetTempPath(System.Length(p),p); //获取临时文件路径

//GetTempFileName(

// lpPathName: PChar; {路径}

// lpPrefixString: PChar; {前缀}

// uUnique: UINT; {指定生成文件名的数字, 文件名将根据参数2、参数3来生成}

// lpTempFileName: PChar {文件名需要的缓冲区}

//): UINT; {指定生成文件名的数字, 如果参数3是0, 则返回文件名长度}

Windows.GetTempFileName(p,'~My',20,f); //生成一个临时文件名

//Showmessage(f);

Jro:=ComObj.CreateOleObject('JRO.JetEngine'); //注意与使用CreateOleObject('DAO.DBEngine.36');的区别

AccessComp:='f:\mcmygs.mdb';

ConnStr:='Provider=Microsoft.Jet.OleDB.4.0;PassWord=;Data Source=%s';

Jro.CompactDataBase(Format(ConnStr,[AccessComp]),Format(ConnStr,[f])); //压缩和修复数据库

Windows.CopyFile(PChar(@f[0]),PChar(AccessComp),False);

SysUtils.DeleteFile(f); //删除临时文件名

//Unassigned与Null是有区别的:Null表示该值未知,Unassigned表示未赋值

Jro:=Unassigned; //释放

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: