access里有备注字段和old字段。以前保存了一些数据。使数据库有几十M,现在我已经把记录全部删了,但为什么文件的体积一点都没有小。

解决方案 »

  1.   

    工具->数据库实用工具->压缩与修复数据.删除时,数据库只是作了删除标记, 就象回收站那样, 所以还是会占用很大的空间的.
      

  2.   

    工具->数据库实用工具->压缩与修复数据.
      

  3.   

    Access的存储就是这样的压缩就可以了。
      

  4.   

    使用Access打开,然后压缩用代码就这样
    unit AccessTools;interfaceuses Sysutils, ComObj, Dialogs, Variants;function DaoActive(var DaoObject:OleVariant):Boolean;
    function CompactMDB(const FileName:string):Boolean;
    function RepairMDB(const FileName:string):Boolean;
    function CreateMDB(MDBName: 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;//Compact Access MDB file
    function CompactMDB(const FileName: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);
          DeleteFile(FileName);
          RenameFile(TempFile,FileName);
          Result:=True;
        except
          on E:EOleException do
            ShowMessage(E.Message);
        end
      finally
        db:=Unassigned;
      end;
    end;// Repair Access MDB file
    function RepairMDB(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;// Create Access MDB file
    function CreateMDB(MDBName:string):Boolean;
    var  
       CreateAccess: OLEVariant;
    begin  
       Result:=False;
       try
         CreateAccess:=CreateOleObject('ADOX.Catalog');
         try
           CreateAccess.Create(Format('Provider=Microsoft.Jet.OLEDB.4.0; Data Source=%s', [MDBName]));
         finally
           CreateAccess:=Unassigned;
         end;
         Result:=True;
       except
         on E:EOleException do
            ShowMessage(E.Message);
       end;
    end;  end.
      

  5.   

    工具->数据库实用工具->压缩与修复数据.
      

  6.   

    accsee菜单-〉工具->数据库实用工具->压缩与修复数据
      

  7.   

    要在程序里实现压缩,用AdoX很简单的!