为什么老是出错???急需答案!!!(30分)

  • 主题发起人 主题发起人 mxdsx
  • 开始时间 开始时间
M

mxdsx

Unregistered / Unconfirmed
GUEST, unregistred user!
我在对一个表反复进行修改时,特别是修改了CHAR类型的字段里的值,进行保存以后,再想改FLOAT类型的字段里的值,不知为什么老是出错,反过来也是如此,既然这么不稳定,用DELPHI开发出来的程序都很不安全,我都失去很大信心了。提示错误为:
Couldn't perform the edit because another userchanged record.
我用的DELPHI5.0,服务器端为SQL 6.5。不知谁能帮我解决一下问题!!!
多谢了!
置心一处,无事不办!!!
 
得看代码了。
 
我也正遇到這種問題,原因應該是數據修改時共享發生錯誤.注意下面的問題:
1.少用TTable控件.
2.進行保存數據時先Close相關表.
如果實在不行,按以下方面做包你不會出這個提示(開發過程一樣會提示,但EXE
文件不會提示),攔截EDBEngineError錯誤:
TRY
...
EXCEPT ON EDBEngineError DO
...
END;

如果有更加好的辦法,請通知.
 
这是有名的数据锁问题……
 
当你改完保存后是否对表的active值设为关闭?如果没有关闭则它一直处于打
开状态,你再改时当然不允许你改了。
post之后active:=false;
edit时active:=true;
不知以上顺序对不对就看你自己来试一下。
 
C/S型的数据库应该用“事务”来处理啦,表也不适合使用,用QUERY
详细地去看看TDATABASE控件的方法吧。
原因很简单,就是共享错误
 
我遇到过同样的错误信息.不过用的是Oracle8数据库.

默认 UpdateMode = upWhereAll;

改为 upWhereChanged upWhereOnly

应该是你的表出了问题.delphi是优秀的.
你的表应该是外健比较多,经常被操纵.
你用PB也会报错,但提示不一样.修表能解决.
 
如果用了CachedUpdates,先 ApplyUpdate 拉
 
放弃 TTable 吧!!
你可以试试 TDataSet(如 TQuery) 的 CacheUpdate

 
开始用database.starttransaction;
完成后用database.commit;
修改失败用database.rollback;
 
你应给用事务提交,你刚才的问题是数据库中的锁问题,即住如下原则:
1。表不要轻易打开(建议使用query)在使用时在打开,尤其关联表
2。在进行操作(录入,删除,修改)后,记住要将相关联表要关闭,
3,存盘是最好利用事务
 
接受答案了.
 
多谢大家!给我解决了问题!!!
 
后退
顶部