我调用Clientdataset.ApplyUpdates,出现record not found or changed by another user。
  具体操作如下:先Clientdataset.insert;Clientdataset.ApplyUpdates
  但当我再Clientdataset.edit,Clientdataset.ApplyUpdates时就出错了。

解决方案 »

  1.   

    我使用Sql Server 数据库更新多条记录 没有问题;但是使用 Oracle 就不能同时更新多条记录就报
    “record not found or changed by another user。

    这样的错误。
    真奇怪,难道 ClientDataSet不能很好的支持Oracle ?
      

  2.   

    我使用Sql Server 数据库更新多条记录 没有问题;但是使用 Oracle 就不能同时更新多条记录就报
    “record not found or changed by another user。

    这样的错误。
    真奇怪,难道 ClientDataSet不能很好的支持Oracle ?
      

  3.   

    如果一条记录的ID是自增字段,那么客户端不知道它下一个数值应该是几,只有提交到服务器才知道,你APPEND后再POST,客户端认为ID=NULL,服务端收到请求把记录APPEND到数据库,数据库给ID正确的值,比如是1,客户端这时EDIT并POST,这
      

  4.   

    不小心提交了-_-续上这时它会提交两条数据,一条是修改前的,一条是修改后的,服务端收到请求更新,会先对比修改前的与数据库中的是否一致,这样为了防止多用户操作时出现问题,但现在客户端提交的数据中修改前的ID为NULL,数据库中实际为1,就会出错了
      

  5.   

    这个问题可以看一下UpdateMode的属性设置说明。
    一般时候多为表中含有时间类型的字段 通过Delphi程序获得的时间后面有毫秒部分,而这样存到
    数据库中后,再通过cds取出来的时候数据就把毫秒的那部分取消了。当UpdateMode的属性设置为upWhereAll 就会报错了。
      

  6.   

    非常感谢MoveFirst
    我也遇到过这样的问题,一值都不敢用SQL语句更新,就是因为这个问题
    现在解决了,总算见到阳光了