我用Query_Field.ApplyUpdates来提交修改,结果出现这样的报错:
couldn't perform the edit because another user changed the record
这是为什么??如何改?紧急求救!!快
couldn't perform the edit because another user changed the record
这是为什么??如何改?紧急求救!!快
解决方案 »
- DELPHI 主表和从表在DBGrid中的显示问题
- 购买屏幕取词程序原代码--win98,win2k,winxp屏幕取词程序原代码,能取IE的
- 请问idHttp控件有没有session?如果没有,是不是每次请求都要建立一个连接,那不是效率很差吗?
- 如何用二个按钮代替,richedit的滚动条按钮???
- UDP协议如何通过网关?
- DBGRID数据保存到EXCEL文件中产生的问题
- 当panel有边框是,上左右可以通过边框-1隐掉,如果是底部怎么处理,保存其它三边
- FlatStyle控件应用中的意外??????
- 我想把edit里的内容打印出来怎么实现呢?
- 如何制作可作编译后可移动控件的报表?
- [Fatal Error] ExTracer.pas(59): File not found: 'JclDebug.dcu'
- Delphi中shockwaveflash控件的如何使用?
大意就是在你准备进行更新时,你当前所看到的数据在数据库中已经发生了变化
(也就是被别人改变了),你要知道,TADODataSet也是发SQL去更新数据库的,
缺省方式其是索引字段与被改变字段作where匹配字段查找字段来更新,(有几种方式
,这是缺省的方式)
类似
update tbname set *=*
where 索引字段=*
and 被改变字段=*....
如果这些where字段发生了变化会导致本意要更新一条,但准备被更新的记录条数为0
或多于1条,就会发生你上述的提示.其实这是很符合逻辑的但有时可能会感到不方便.如果是被其他程序所改变,而你希望有这种情况下更新情况,你可以使用wherekeyonly
更新方式.另外要注意一种情况:缺省值,在这种情况下,没有其他程序更新数据库,也可能
发生字段值被改变而引发上述提示,解决办法是取消sqlserver或access字段
的缺省值.
1:后台有字段有默认值
2:浮点数精度
3:触发器修改了表本身
等等,
你试试在DataSet的AfterPost事件中加入DataSet.Refrash。可能能解决问题!