如题,post后发现直接用数据集edit,字段赋值,再post发现不对,数据集的状态也变成了dsInsert了

解决方案 »

  1.   

    看来大家不屑回答的我的问题呀,唉,再顶。。
    post 完后,才可获得新旧数据,然后判断某一字段长度是否在规定范围内,如果在此范围内,就追加一点尾部信息,如果超出(即尾部信息不能再添加了,否则会走超出数据库字段的长度限制)。可post后发现游标变了。直接
    clientdataset.edit;
    clientdataset.fieldbyname('***').astring := '***';
    clientdataset.post;
    就会变成一条新记录,生的sql语句多了一条insert语句了,结果报错了,所以请clientdataset使用高手帮忙咯。。
      

  2.   

    是不是POSG后,再EDIT POST。这时状态不是DSEDIT是DSINSERT。你看看DELTA不就知道了。
      

  3.   

    var
      FRecNo: Integer;……  FRecNo := ClientDataSet1.RecNo;
      ClientDataSet1.Edit;
      ClientDataSet1.FieldByName('AAA').AsString := 'ABC';
      ClientDataSet1.Post;
      ClientDataSet1.RecNo := FRecNo;
      ClientDataSet1.FieldByName('AAA').AsString := 'BCD';
      ClientDataSet1.Post;
      

  4.   

    var
      FRecNo: Integer;……  FRecNo := ClientDataSet1.RecNo;
      ClientDataSet1.Edit;
      ClientDataSet1.FieldByName('AAA').AsString := 'ABC';
      ClientDataSet1.Post;  ClientDataSet1.RecNo := FRecNo;
      ClientDataSet1.Edit;
      ClientDataSet1.FieldByName('AAA').AsString := 'BCD';
      ClientDataSet1.Post;