使用access数据库*.mdb,ado访问,程序中需要对记录多次删除和添加,运行多次后,*.mdb体积越来越大,即使
删除所有记录体积也只增不减少。如何整理数据库,使其体积恢复正常。记得在dbase里,运行delete 后需要pack 来清理记录,delphi中也这样吗?

解决方案 »

  1.   

    //=============================================================================
    // Procedure: CompactDatabase
    // Author   : ysai
    // Date     : 2003-01-27
    // Arguments: AFileName,APassWord:string
    // Result   : boolean
    //=============================================================================
    function CompactDatabase(AFileName,APassWord:string):boolean;
    //压缩与修复数据库,覆盖源文件
    var
     STempFileName:string;
     vJE:OleVariant;
    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;
    end;
      

  2.   

    http://www.delphifans.com/infoview/Article_1.html
      

  3.   

    使用ADO中JRO.dll就可以了Microsoft Jet and Replication Objects 2.6 Library
      

  4.   

    顶!access 在这方面太差劲了