比如:
AdoQuery.SQL.Text:='select A表.字段1,B表.字段2.... from A表 left join B表 on A表...=B表...';
上边这个SQL语句表示关联两个表(A表,B表),其中A表为主表 。
如果修改了A表的数据,那么用
AdoQuery.UpdateBatch 就可以很容易把表给修改过来;如果我同时也修改了B表的数据,但是我不想提交B表的数据,该如何办?我查阅了大量资料:
可以用:
AdoQuery.Recordset.Properties.Item['Unique Table'].Value := 'A表';
保证 只更新主表但是如果修改了 B表 的某些字段,
那么通过AdoQuery.UpdateBatch 更新的时候,它会把 B表 的这些字段误以为是A表的字段;
我通过监控软件发现执行 AdoQuery.UpdateBatch 时,
其执行得Sql语句为:' UPdate  A表 set  字段2='... '   where ...
由于 字段2 是B表的字段;所以会报错;如何在执行AdoQuery.UpdateBatch 的时候,让B表的字段不参与提交呢?

解决方案 »

  1.   


    听某些朋友说:
    “ADOQuery中取固定列,每一列都有ProviderFlags,把不需要提交的列pfInUpdate置为false就可以了”实际上是不行的。我快崩溃了,拿到必须要手工写Sql语句才能实现数据更新?
      

  2.   

    foxe(火狐) ( ) 信誉:95  2006-07-26 16:49:00  得分: 0  
     
     
       我的连一个表都更新不了,总是显示没有足够的信息,不知何故
      
     
    ----------------------------------------------------------
    这个问题似乎跟重复记录有关,如果select出的列名太少,很容易出现相同的纪录
      

  3.   

    foxe(火狐) ( ) 信誉:95  2006-07-26 16:49:00  得分: 0  
     
     
       我的连一个表都更新不了,总是显示没有足够的信息,不知何故
      
     
    ----------------------------------------------------------
    这个问题似乎跟重复记录有关,如果select出的列名太少,很容易出现相同的纪录
    -----------------------------------------------------------------------------------
    應該不完全是重復記錄的問題,我試過不重復記錄也會出現這種問題