DELPHI5(ADO) + SQL2000 ,主從表我用的是事務提交的辦法﹐在刪除記錄后﹐保存出錯.保存时用
try
AdoConnection1.BeginTrans;
Adoquery1.UpdateBatch; //主表
Adoquery2.UpdateBatch; //從表
AdoConnection1.CommitTrans;
except
AdoConnection1.RollbackTrans;
end;刪除從表一記錄保存時﹐提示如下﹕
Error:
Project ProName.exe raised exception class EOleException with message
'Row cannot be located for updating. Some values may have been changed since it was
last read'. Process stopped. Use Step or Run to continue.刪除主表記錄保存時﹐提示如下﹕
Error:
Project ProName.exe raised exception class EOleException with message 'Empty row cannot be inserted.
Row must have at least one column value set'. Process stopped. Use Step or Run to continue.這是什么原因﹖﹖跟蹤后﹐發現 ADOQuery1.UpdateBatch (主表)可以通過﹐但 ADOQuery2.UpdateBatch (從表)就不行了﹐出現以上提示. 請指點!!! 在線等待......
try
AdoConnection1.BeginTrans;
Adoquery1.UpdateBatch; //主表
Adoquery2.UpdateBatch; //從表
AdoConnection1.CommitTrans;
except
AdoConnection1.RollbackTrans;
end;刪除從表一記錄保存時﹐提示如下﹕
Error:
Project ProName.exe raised exception class EOleException with message
'Row cannot be located for updating. Some values may have been changed since it was
last read'. Process stopped. Use Step or Run to continue.刪除主表記錄保存時﹐提示如下﹕
Error:
Project ProName.exe raised exception class EOleException with message 'Empty row cannot be inserted.
Row must have at least one column value set'. Process stopped. Use Step or Run to continue.這是什么原因﹖﹖跟蹤后﹐發現 ADOQuery1.UpdateBatch (主表)可以通過﹐但 ADOQuery2.UpdateBatch (從表)就不行了﹐出現以上提示. 請指點!!! 在線等待......
你的情况应该是主表与子表通过外键关联了,当主表执行DELETE操作时,SQL SERVER把相应从表中的数据也DELETE了,所以当从表UPDATEBATCH时,ADODATASET就会发现他取回的数据已不存在于数据表中,所以会报'Row cannot be located for updating. Some values may have been changed since it was last read'这个错误,
或是将数据库中定义的主从表关系去掉,你写的这段程序也可以通过
謝謝大家。在主表的dataset上﹐是否只能是一個表的dataset? 我發現﹐如果關聯了多個表﹐它一定會出錯﹗另外﹐与相關的組件有沒有關系? 有的書說﹐從表一定要用Ttable 或 TADOTable 的。不知大家有沒注意到這個問題。請發表你的意見。
先删除从表,再删除主表,记得要开个事务;没问题的,放心吧。