JRO-CompactDataBase

{$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;                 {指定生成文件名的数字如果参数30, 则返回文件名长度}

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); //删除临时文件名

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

Jro:=Unassigned; //释放

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值