我用TQUERY来删除当前记录
   TQUERY.Delete;
确提示无法为更新行集定位;一些值可能已在最后读取后改变。
是不是这样删除记录不对。
还是其他的原因。

解决方案 »

  1.   

    if (DataSet as TDBDataSet).Database.InTransaction then (DataSet as TDBDataSet).Database.Rollback;
        (DataSet as TDBDataSet).Database.StartTransaction;//开始提交一个事务
        try
          (DataSet as TDBDataSet).ApplyUpdates;//把缓存中未决的记录写到数据集中
          (DataSet as TDBDataSet).Database.Commit;//把调用StartTransaction以来所有的数据变化都反映到服务器上,与Query_Main.Database.Rollback相反
          Result := true;
        except
          (DataSet as TDBDataSet).CancelUpdates;
          (DataSet as TDBDataSet).Database.Rollback;//把调用StartTransaction以来所有的数据变化都取消,与Query_Main.Database.Commit相反
          Result := false;
        end;
      

  2.   

    不太清楚,可能是因为你的表中有完全一样的记录,当用delete方法时,可能就会有这样的问题,。
      

  3.   

    最好用sql语句来删除,准确,方便,快捷,简单易懂,你得问题,先刷新一下试一试?
      

  4.   

    在QUREY的SQL中没有包含相关表的主键,如表Tt中主键为ID,其他为name,sex
    而你的SQL为select name,sex from Tt,当数据改变提交时QUERY是无法定位到所修改的记录的
      

  5.   

    to : jenemery(小熊) 
     在delphi里如何添加
       比如:with ADOQuery do
              begin
               append;
               fieldbyname('字段‘).value:=?;
               post;
             end;
       这个?怎么写呢?
      

  6.   

    你最好是在数据库中加入一栏能唯一标识行的字段,比如ACEESS中的自动编号,问题应该就解决了。
      

  7.   

    可是我一POST就出错: with querydo
        begin
          append;
          fieldbyname('date').Value:='aaa';
          fieldbyname('pzid').Value :='bbb'
           fieldbyname('gh').Value:='ccc';
              post;
        end;
       提示的错误为:
        默认值没有生效。不能POST;