有A,B两个表,A表与B表做 通过两个表的X1字段做 左连接,用adoQuery ,数据如:
   A.X1     A.X2     B.X1     B.T2
   aaaa     333      aaaa     ddfd
   bbbb     444
   cccc     555      cccc     fdad
   dddd     777      dddd     feaf其中有些数据是A表有X1值,B表没有X1值,所以做左连接,当给表B设置的两个字段赋值后用updatebatch保存,出现“无法为更新定位行。一些值可能已在最后一次读取后已更改!”
我想可能是ADO在AB两个表都同时做了插入操作,实际上应该只在B表插入。能不能象BDE的TupdateSQL那样指定插入更新哪个表!!!!!!怎么解决这个问题呢!!!!!

解决方案 »

  1.   

    ado好像不能在DBGrid中直接对复合查询出来的结果做修改呀,用别的控件显示数据,然后用update语句更新
      

  2.   

    apartst(一元),可以在dbgrid中直接修改的。
    试过如果不是左连接,而是等值连接,插入数据后updatebatch保存,可以实现,查表发现在两个表中同时都插入了数据,可是用左连接时就会出错,怀疑是在保存时对A表也做了插入操作。
      

  3.   

    要同时对两个表更新,select语句必须包含两个表的主键.
      

  4.   

    想实现的目的是:只在表B中插入,A中的数据保持不变
    以前用BDE的TupdateSQL,可以指定插入更新那个表的,现在用ADO却不行了,奇怪!