我用TADOQuery控件连接数据库。并在TDBGrid控件中显示。I have inserted a new record, saved it to the database and then try to edit it.  .saving it but happend "Row cannot be located for updating. Some values may have been changed since it was last read.". 
谢谢。如果能告诉我为什么 我将感激不尽。

解决方案 »

  1.   


    在阅读李维的书后我自己写了个通用函数以用来解决类似问题
    procedure Tmdata.condtable(adoc_tmp:TADOConnection;adoq_tmp: TADOQuery;sort:byte);
        var pty:property_;
            pties:properties;
            icount:integer;
    begin        if sort=1 then
                    begin
                    adoq_tmp.active:=false;
                    end;
            adoq_tmp.Connection:=adoc_tmp;
            adoq_tmp.Active:=true;
            pties:=adoq_tmp.Recordset.Properties;
            for icount:=0 to pties.Count-1 do
                    begin
                      pty:=pties.item[icount];
                      if pty.name ='Update Criteria' then
                                    pty.Value:=0;
                    end;end;
      

  2.   

    与主键有关,TAdoquery 是否为几个表关联形成的SQL语句 ?
      

  3.   

    To:ltmb118()  是几个关联的表,但是只是针对一个表的操作。其他的表只是为了显示。比如我操作的是员工表,员工表里有一个单位ID ,而单位名是从 单位表里取的。而且我更新时用的是 adoquery.insert  ; editquery.fieldbyname('name'):='xiaowu';.....;adoquery.post . 然后我删除刚刚添加的这条记录用 adoquery.delete 就出错了。
      

  4.   

    TO  YANGYUGW(小杨)什么是主键更新方式???
      

  5.   

    ado就有这个问题,
    我一直没搞定,关注
      

  6.   

    我以前也遇到过这个问题,很久都没有解决,我最后用的是SQL去写,才解决它你也可以用SQL试试,应该能解决问题
      

  7.   

    Jeff20040819(最爱Delphi,C#——苦练内功中) : 用sql怎么写,能举个例子吗?谢谢!