Clientdataset.ApplyUpdates 的问题求助

 

转自:http://www.skinplusplus.com/bbs/archiver/tid-115515.html

 

覆雨翻云 发表于 2010-5-29 14:14

Clientdataset.ApplyUpdates 的问题求助

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

tianya.cn 发表于 2010-5-29 14:14

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

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

pbuilder 发表于 2010-5-29 14:14

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

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

su7en 发表于 2010-5-29 14:14

你好,我用sql   server的,但我先Clientdataset.edit,然后写更新的数据自己段,最后Clientdataset.ApplyUpdates,结果也出错了,不过,我在别的窗口实现同样的功能没有出错,不知道为什么这个就是出错了,但有时候又可以更新的,但现在就是不能更新的!
数据库的数据库没有变化!!
请高手指教,我的QQ:89399727
msn:[email protected]

tianya.cn 发表于 2010-5-29 14:14

不要有自增字段      任何字段不要有默认值

追无极 发表于 2010-5-29 14:14

自增字段对数据更新有什么影响的哦?
请高手说清楚点哦!!

tianya.cn 发表于 2010-5-29 14:14

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

wentianxiang 发表于 2010-5-29 14:14

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

pbuilder 发表于 2010-5-29 14:14

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

成吉思汉 发表于 2010-5-29 14:14

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

你可能感兴趣的:(oracle,sql,SQL Server,qq,Delphi)