程序代码如下:ADODataSet1.LockType:=itBacthOptimistic
....ADODataSet1.First;While Not ADODataSet1.Eof Do
begin
     if ADODataSet1[2]=条件 then
        更新
     ADODataSet1.Next;
end;ADODataSet1.UpdateBatch;执行时,总是出现错误,提示“无法更新定位行。一些可能已在最后一次读取后已更改”。我试着把ADODataSet1.UpdateBatch放入循环内,以及给UpdateBatch加入crCurrent还是不行。请大家帮忙。

解决方案 »

  1.   

    if ADODataSet1[2]=条件 then
    begin       
      ADODataSet1.Edit;
      更新
    end;
    ADODataSet1.Next;Email:[email protected]
      

  2.   

    楼上兄弟
    更亲中已经包含了 ADODataSet1.Edit
      

  3.   

    with DataModule1.ADOQuery1 do begin
        SQL.Clear;
        SQL.Add('Update yourTable '); //SQL文
        SQL.Add(' Set field1=:var1,field2=:var2 ');
        SQL.Add('Where field3=:var3 ');
        Parameters.ParamByName('var1').Value := 値;//参数付値
        Parameters.ParamByName('var2').Value := 値;
        Parameters.ParamByName('var3').Value := 値;
        ExecSQL; //執行
    end;
    (建议用Update SQL文更新...)
      

  4.   

    同意ailibuli(愛理不理),用Update SQL更新
      

  5.   

    你的表设计有问题吧,再不就直接用SQL语言直接操作数据库吧,速度快有简单。呵呵。不会出现脏数据的问题。
      

  6.   

    这种情况是由于你UPDATEBATCH时,记录指针向下移动一条了,因为你用了NEXT,再用UPDATEBATCH
    你把它们的顺序调一下,再试试如何
      

  7.   

    同时发的,我的在前面耶。tgtcn(tgtcn)兄,你好倒霉哦