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 (從表)就不行了﹐出現以上提示.  請指點!!!  在線等待......

解决方案 »

  1.   

    TO:: angle097113(深思不解)   TKS!  '分开的处理就好了',保存時分開處理嗎﹖
      

  2.   

    写法是应该要分开的,分开就保证不了数据的一致性,后面的保存失败怎么办?如果用sql语句,把它们写在同一语句要同一任务执行,会好一点
      

  3.   

    我也是這樣想的。謝謝 XXSingle(三笑留情〓★▲◆) .
      

  4.   

    先从表,再主表。
    你的情况应该是主表与子表通过外键关联了,当主表执行DELETE操作时,SQL SERVER把相应从表中的数据也DELETE了,所以当从表UPDATEBATCH时,ADODATASET就会发现他取回的数据已不存在于数据表中,所以会报'Row cannot be located for updating. Some values may have been changed since it was last read'这个错误,
    或是将数据库中定义的主从表关系去掉,你写的这段程序也可以通过
      

  5.   


    謝謝大家。在主表的dataset上﹐是否只能是一個表的dataset? 我發現﹐如果關聯了多個表﹐它一定會出錯﹗另外﹐与相關的組件有沒有關系? 有的書說﹐從表一定要用Ttable 或 TADOTable 的。不知大家有沒注意到這個問題。請發表你的意見。
      

  6.   

    用sql 语句,delete from tables , delete from table 
    先删除从表,再删除主表,记得要开个事务;没问题的,放心吧。