请问一个'Record not found or changed by another user'错误的问题! ( 积分: 50 )

  • 主题发起人 主题发起人 leisilin
  • 开始时间 开始时间
L

leisilin

Unregistered / Unconfirmed
GUEST, unregistred user!
在做ClientDataSet控件数据更新的时候 会报如下错误 'Record not found or changed by another user'.ClientDataSet中更新设为 upWhereKeyOnly 而且也设置了 主健也设置了 但更新时如果 写入了 CDS_AnJian.FieldByName('LvShi_DaiMa').AsString 和 LvShi_DaiMa 为同一值得时侯 就会报上诉错误信息。
CDS_AnJian.Edit ;
CDS_AnJian.FieldByName('LvShi_DaiMa').AsString := LvShi_DaiMa;
if CDS_AnJian.State in [dsEdit, dsInsert] then
CDS_AnJian.Post ;
if CDS_AnJian.ChangeCount > 0 then
CDS_AnJian.ApplyUpdates(-1);
 
在做ClientDataSet控件数据更新的时候 会报如下错误 'Record not found or changed by another user'.ClientDataSet中更新设为 upWhereKeyOnly 而且也设置了 主健也设置了 但更新时如果 写入了 CDS_AnJian.FieldByName('LvShi_DaiMa').AsString 和 LvShi_DaiMa 为同一值得时侯 就会报上诉错误信息。
CDS_AnJian.Edit ;
CDS_AnJian.FieldByName('LvShi_DaiMa').AsString := LvShi_DaiMa;
if CDS_AnJian.State in [dsEdit, dsInsert] then
CDS_AnJian.Post ;
if CDS_AnJian.ChangeCount > 0 then
CDS_AnJian.ApplyUpdates(-1);
 
问题出在定位记录上(应该是在这句前面的语句),从出错信息来看是没有定位到符合要求的记录。
 
但如果是 CDS_AnJian.FieldByName('LvShi_DaiMa').AsString 和 LvShi_DaiMa 不一样的时候就可以提交阿,为什么付同样得值 ChangeCount 会被修改?
 
对于你第一个问题,只有自己来写更新或插入语句了。
为什么付同样得值 ChangeCount 会被修改?
你可以去看一下fieldvalues['LvShi_DaiMa'].NewValue与
fieldvalues['LvShi_DaiMa'].OldValue。
 
DM.CDS_AnJian.FieldByName('LvShi_DaiMa').OldValue
DM.CDS_AnJian.FieldByName('LvShi_DaiMa').NewValue
得值完全一样的! 真个程序段我只有这一处修改的地方。。。
 
應該是這樣的,當你下下來的數據與數據庫中的數據不一樣時,就會出現這個錯誤,即你下下來數據,別人也下下來并且修改了數據,你再修改時,就時這樣,最好的辦法是提示中文,說這條記錄別人已經修改,然後重新查詢下下來數據,再修改!
 
就我一个人在用啊 数据库中没有改动过的!
 
只有我一个人连在数据库上,而且每次都是这样,付同样得值就会报错,不一样得值就没问题。
 
LvShi_DaiMa 是不是主键啊?
 
改用.value行不行呢?
 
也不行啊 ,,,
 
數據庫表中有缺省值.去掉試試
 
更改之前load一把
 
数据库表有默认值,会影响ClientDataSet,会出错呢!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
948
import
I
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
后退
顶部