你是大哥!

解决方案 »

  1.   

    可能有其它软件在使用权用该数据库,如:你在用Access修改该数据库
      

  2.   

    是,就是我的当前程序打开了这个数据库,我的意思怎么先断开与数据库连接,压缩后,恢复连接
    给出这个函数:
    function CompactDatabase(AFileName,APassWord:string):boolean;var
      STempFileName:string;
      vJE:OleVariant;
      Const
      SConnectionString       = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
                                    +'Jet OLEDB:Database Password=%s;';begin
      STempFileName:=GetTempPathFileName;
      try
        vJE:=CreateOleObject('JRO.JetEngine');
        vJE.CompactDatabase(format(SConnectionString,[AFileName,APassWord]),
            format(SConnectionString,[STempFileName,APassWord]));
        result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
        DeleteFile(STempFileName);
      except
        result:=false;
      end;
      

  3.   

    在调用此函数之前关闭对这个access库的连接
      

  4.   

    在调用这个函数之前要关闭对这个access库的连接