1、SQLServer2000数据库+D6开发环境。
我想用TADOQuery的ltBatchOptimistic来批更新操作的数据。
可是我在执行UpdateBatch(arAll)方法的时候,为什么总是提示:
“无法更新行集定位:一些值可能已在最后读取后改变”我的表结构大致如下:
  TableName:   kc_GdSheetDetail
  
   FieldName:
       
   SheetCode:string[20] is not null ,primary key
   gdCode:string[20] is not null ,primary key
   ......
   .........
我把上面的SheetCode(外键)+gdCode作为这张表的主键。请问我该如何处理这种错误阿?    

解决方案 »

  1.   

    我又把主键用一个ID的自动增量来试了一下同时
    ADOQuery1的相关属性为:  ADOQuery1.CursorType:=ctStatic;
      ADOQuery1.CursorLocation:=clUseClient;
      ADOQuery1.LockType:=ltOptimistic;
    这样不应该再出现上面的错去了呀。可是我插入数据的时候还是存在!
       这种错误好像就是与索引或是主键有关系!但是不知道怎么解决!
      

  2.   

    加一个id 字段为uniqueidentifier 默认值为:newid() 作为主键!试一试,应该可以!
      

  3.   

    allan2002(丸子):我是在SQL2000中啊。你所得我怎么看不懂啊。呵呵
      

  4.   

    ADOQuery1.CursorType:=ctStatic;
    ADOQuery1.LockType:=ltOptimistic;换成
    ADOQuery1.CursorType:=ctDynamic;
    ADOQuery1.LockType:=ltBatchOptimistic;