转自:http://www.skinplusplus.com/bbs/archiver/tid-115515.html
我调用Clientdataset.ApplyUpdates,出现record not found or changed by another user。
具体操作如下:先Clientdataset.insert;Clientdataset.ApplyUpdates
但当我再Clientdataset.edit,Clientdataset.ApplyUpdates时就出错了。
我使用Sql Server 数据库更新多条记录 没有问题;
但是使用 Oracle 就不能同时更新多条记录就报
“record not found or changed by another user。
”
这样的错误。
真奇怪,难道 ClientDataSet不能很好的支持Oracle ?
我使用Sql Server 数据库更新多条记录 没有问题;
但是使用 Oracle 就不能同时更新多条记录就报
“record not found or changed by another user。
”
这样的错误。
真奇怪,难道 ClientDataSet不能很好的支持Oracle ?
你好,我用sql server的,但我先Clientdataset.edit,然后写更新的数据自己段,最后Clientdataset.ApplyUpdates,结果也出错了,不过,我在别的窗口实现同样的功能没有出错,不知道为什么这个就是出错了,但有时候又可以更新的,但现在就是不能更新的!
数据库的数据库没有变化!!
请高手指教,我的QQ:89399727
msn:[email protected]
不要有自增字段 任何字段不要有默认值
自增字段对数据更新有什么影响的哦?
请高手说清楚点哦!!
如果一条记录的ID是自增字段,那么客户端不知道它下一个数值应该是几,只有提交到服务器才知道,你APPEND后再POST,客户端认为ID=NULL,服务端收到请求把记录APPEND到数据库,数据库给ID正确的值,比如是1,客户端这时EDIT并POST,这
不小心提交了-_-
续上
这时它会提交两条数据,一条是修改前的,一条是修改后的,服务端收到请求更新,会先对比修改前的与数据库中的是否一致,这样为了防止多用户操作时出现问题,但现在客户端提交的数据中修改前的ID为NULL,数据库中实际为1,就会出错了
这个问题可以看一下UpdateMode的属性设置说明。
一般时候多为表中含有时间类型的字段 通过Delphi程序获得的时间后面有毫秒部分,而这样存到
数据库中后,再通过cds取出来的时候数据就把毫秒的那部分取消了。当UpdateMode的属性设置为upWhereAll 就会报错了。
非常感谢MoveFirst
我也遇到过这样的问题,一值都不敢用SQL语句更新,就是因为这个问题
现在解决了,总算见到阳光了