比如我在程序中写入这么一段话 更新客户表的客户名ctid,(ctid为主键),qy1为adoquery,直接连接adoconnection
qy1.close;
qy1.sql.clear;
qy1.sql.add('select * from ctid where ctid=''a''');
qy1.open;
qy1.edit;
qy1.fieldbyname('ctid').value:='c';
qy1.post;
当程序在执行open 后我手动修改ctid等于a的记录,把ctid更改为b,再执行下面的程序出现无法更新行集定位错误,而我修改ctid等于a的记录的其他字段的值却没有问题。请知道的人解答一下,谢谢。

解决方案 »

  1.   

    问题应该出在qy1.fieldbyname('ctid').value:='c';这条语句上!你把这条语句给屏蔽掉试一下!
      

  2.   

    请问在程序运行到open的时候,你上面的数据定位到了ctid=a的那行数据了,你在修改ctid=b,你在执行下面的语句,当然就无法定位了啊
    ------------------------------------
    体验速度,体验CSDN论坛助手:http://community.csdn.net/Expert/TopicView.asp?id=4700683
      

  3.   

    为什么无法定位了 adoquery 根据什么定位呢 这正式我想要搞明白的
      

  4.   

    你open后,sql语句查询的结果是ctid=a,而你在手动该为b,在执行,当然会有问题。你查了ctid=a,数据就定位到了ctid=a那行数据上了。