我用Delphi操作Access2000数据库,发现删除数据库中的大量记录后,数据库文件大小不怎么变化,打开access发现那些记录确实被删除了。请问用Delphi如何处理才能把access数据库容量减小?

解决方案 »

  1.   

    unit unAccessTools;interfaceuses Sysutils,ComObj,Dialogs;function DaoActive(var DaoObject:OleVariant):Boolean;
    function DaoCompactDB(const FileName,Pwd:string):Boolean;
    function DaoRepairDB(const FileName:string):Boolean;implementationfunction DaoActive(var DaoObject:OleVariant):Boolean;
    begin
      Result:=False;
      try
        DaoObject:=GetActiveOleObject('DAO.DBEngine.36');
        Result:=True;
      except
        try
          DaoObject:=CreateOleObject('DAO.DBEngine.36');
          Result:=True;
        except
          DaoObject:=Null;
        end;
      end;
    end;//压缩Access数据库
    function DaoCompactDB(const FileName,Pwd:string):Boolean;
    var
      db:OleVariant;
      TempFile:string;
    begin
      Result:=False;
      try
        if not DaoActive(db) then
          Exit;
        try
          TempFile:=ExtractFilePath(FileName)+'msaTemp.mdb';
          db.CompactDatabase(FileName,TempFile,,,';pwd='+Pwd);
          DeleteFile(FileName);
          RenameFile(TempFile,FileName);
          Result:=True;
        except
          on E:EOleException do
            ShowMessage(E.Message);
        end
      finally
        db:=Unassigned;
      end;
    end;//修复Access数据库
    function DaoRepairDB(const FileName:string):Boolean;
    var
      db:OleVariant;
    begin
      Result:=False;
      try
        if not DaoActive(db) then
          Exit;
        try
          db.RepairDatabase(FileName);
          Result:=True;
        except
          on E:EOleException do
            ShowMessage(E.Message);
        end
      finally
        db:=Unassigned;
      end;
    end;end.压缩之后就好了。
      

  2.   

    劝老兄不要用ACCESS,除了只有一个文件操作起来方便点,还是用MYSQL好
      

  3.   

    我就是想在开发的软件中使用一个数据库文件,只好选ACCESS了,你认为什么好呢?请指教以下。用Mysql好像不能单数据库发布吧。dbf好像也一般,还要带个备注文件
    给个建议吧,谢谢
      

  4.   

    不是吧,Excel适合作数据库吗?
      

  5.   

    简单,打开你连接的那个Access文件,在工具|选项中有一项可以选上"关闭时压缩数据库"
    一切搞定。
      

  6.   

    用dao和ado来实行ACCESS数据库的修复与压缩,但发现并不能起到压缩的作用,用dao的代码跟kiboisme(还是铁棒.....针) 大侠的一样!怪事~!我以前也发过帖子,可没人能解决!
      

  7.   

    回复人: qufo(飞) ( ) 信誉:100 
    确实高。
      

  8.   

    在Access工具里有一项数据库实用工具----压缩和修复数据库!
      

  9.   

    如何用ado来压缩access数据库呢?