數據保存時,出現‘record not found or changed by another user’錯誤信息的解決辦法

'record not found or changed by  another user',這個錯誤是我在做項目時,遇到的問題,找了一些參考才解決。如下:
所用的控件有:TDataSetProvider,TADOQuery,TClientDataSet
1.當 DataSetProvider.UpdateMode=upWhereAll 時,update時 where 是指定全部字段,比如,你有a、b、c 3個字段,修改了c字段,在app server中修改的命令是update ... set c=新c where a=舊a and b=舊b and c=舊c
如果 舊的a、b、c之一 已經被其他人改掉了,那where就找不到合適的記錄來修改了。所以報告“記錄被其他人修改”,這個問題和“鎖定”是無關的。

2.當 DataSetProvider.UpdateMode=upWhereKeyOnly 時,update時 where 是指定key字段,比如,
你有a、b、c 3個字段,修改了c字段,a是key field在app server中修改的命令是
update ... set c=新c where a=舊a (只比較a字段)你的程序應該設計爲客戶修改不到主鍵字段的值,這樣
你的客戶只能修改到其他字段的值,其他字段不會出現在where中,就不會出現你說的問題了。

(用第2種方法解決,注意如果你的表原來沒有主鍵的,需要雙擊dataset,添加你的所有field,在有唯一值的field的 ProviderFlasgs 屬性裏面 InKey 設置爲 true (該field必須是有唯一值的,能相當於主鍵的,也就是能唯一確定該行記錄的),TADOQuery,TClientDataSet控件裏的唯一值的field字都要設置InKey爲true)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章