关闭时提示“在事务处理过程中,连接对对象不能被明确地切断”,问题是这样的,ADOConnection.true打开连接,这时网络断了下,一会又连接上了,再用ClientDataSet.ApplyUpdates(0)提交数据时,提示“communication link failure”,无法连接到数据库了,想要把数据库连接重新打开,但这时ADOConnection.false时提示“在事务处理过程中,连接对对象不能被明确地切断”,一直无法关闭,有什么解决办法,上面的错误都没关系,只要能把ADOConnection重新打开就行了

解决方案 »

  1.   

    加个try...except..end
    如果网断了就把ClientDataSet断掉连接
      

  2.   

    ClientDataSet.ApplyUpdates(-1)来提交
      

  3.   

    ClientDataSet.ApplyUpdates本来就有问题,大系统最好不要用这个!
      

  4.   

    ADO重新设置关联的参考
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
      vList: TList;
    begin
    //断开连接
      vList := TList.Create;
      try
        for i := 0 to ADOConnection1.DataSetCount - 1 do
        begin
          ADOConnection1.DataSets[i].Connection := nil
          //记录连接的DataSet
          vList.Add(ADOConnection1.DataSets[i]);
        end;
        //然后重新连接
        ADOConnection1.Close;
        ADOConnection1.Connected := True;
        //重新设置关联
        for i := vList.Count - 1 downto 0 do
          TADODataSet(vList.Items[i]).Connection := ADOConnection1;  finally
        vList.Free;
      end;
    end;