在DELPHI程序里建一个TADOconnection,它是在程序运行就开始一直连接一个ACCESS的数据库,中间不能断,再放一个时钟,时钟运行缩小这个数据库的代码,请问这个代码如何写?

解决方案 »

  1.   

    时钟运行缩小这个数据库的代码
    ------------------------------
    啥子意思哦?是不是压缩数据库?
    如果是可以这样var
    X: OleVariant;
    begin
      X:= createoleobject('JRO.JetEngine');
      x.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\Nwind2k.mdb','Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\nwind2kdelphi.mdb')
    end;
      

  2.   

    程序中用到你,看看有没有用:
    procedure CompactAccess(dbName: string; JetId: string = '4.0');   //压缩
    var
      AVariant: Variant;
    begin
      if FileExists(dbName + '.tmp') then DeleteFile(DbName + '.tmp');
      AVariant := CreateOleObject('JRO.JetEngine');
      AVariant.CompactDataBase('Provider=Microsoft.Jet.OLEDB.' + JetId + ';Data Source=' + dbName ,
      'Provider=Microsoft.Jet.OLEDB.' + JetId + ';Data Source=' + dbName + '.tmp');
      DeleteFile(DbName);
      ReNameFile(dbName + '.tmp', DbName);
    end;procedure Tfrmper.mnucdataClick(Sender: TObject);
    var
      dbname: string;
    begin
      if dmper.acper.Connected = true then dmper.acper.Connected := false;
      Sleep(500);
      dbname := ExtractFilePath(Application.ExeName) + 'permis.mdb';
      CompactAccess(dbname);
      MessageBox(handle, '数据库压缩成功!', '提示', mb_IconInformation + mb_Ok);
      if dmper.acper.Connected = false then dmper.acper.Connected := true;
    end;
      

  3.   

    你们的方法都是不行,因为TADOconnection正在连着数据库,你们的方法会提示数据库被XX用户正在使用,等数据库能使用时再重试
    现在 就是不能断开TADOconnection连接,而又能够压缩数据库