我的意图是想由程序动态建立一个数据库mdb后。进行一次压缩之后,希望它能自动对之后加入的数据进行压缩,我的流程如下:1\新建一个crm.mdb;
2\压缩这个crm.mdb;(建库成功后只做一次压缩)
3\动态加入新的数据(自动对这些数据进行压缩,不想再次调用压缩函数进行压缩);但发现加入新的数据并没有进行压缩。我使用以后这个方式对数据库进行压缩,如下
procedure TCRM.CompactLocalDb;
var
  STempFileName: String;
  vJE: OleVariant;
begin
  STempFileName := 'tempcrm.mdb';
  try
    ADOConnect.Connected := False;
    vJE := CreateOleObject('JRO.JetEngine');
    vJE.CompactDatabase(Format(SConnectionString,[FLocalCrmDB,'']),Format(SConnectionString,[STempFileName,'']));
    CopyFile(PChar(STempFileName),PChar(FLocalCrmDB),False);
    DeleteFile(STempFileName);
  except
    CmdException.WriteLogInfo('TCRM.CompactLocalDb','CompactLocalDb Error');
  end;
end;
期望你的指点。分不是很多,先谢过了。

解决方案 »

  1.   

    注意,Access的压缩是指清空数据库里做过删除标志的数据,从而使数据库变小,并不是普通意义上文件的压缩。所以为了使数据库更小,每次大规模的修改、删除之后,最好是执行一次压缩过程,它本身不会自动压缩的。
      

  2.   

    to xxmmmx(踢踏) 
    但是我没有做任何的数据删除。只是增加数据。在win2k下与win98下同时增加相同的数据。但是win2k下只所增加的数据量只有win98的1/3的大小。这是为何呢。不信,可以测试一下,我有测试过。所以我才觉得奇怪。请大家继续讨论。
      

  3.   

    这个可能是FAT32跟NTFS之区别的问题了~