ADOQuery控件,JOIN三个表的联合查询,其中有一个主表,其他两个只是提取某些字段.
现在对这个ADOQuery控件进行Delete,Update操作,但是只想更新主表中的字段而不改变其他两个表的数据,如何做?
  我查了ADO帮助,说有一个Unique Table动态属性,可以设定这个属性以后的增删改都只对这个此属性的表起作用.在Dephi中如何设置?
  这个属性是否需要ADO驱动的支持,驱动不同是否也有变化?

解决方案 »

  1.   

    果然高级,看不懂,不过我认为ado驱动,在98se以上,你不需要关心。
      

  2.   

    删除时从表也会被删除
    添加时从表字段不会显示我是这么使用的:
    用LookUp字段显示从表字段
    这样删除,添加都不会有问题
      

  3.   

    现在我也是用LookKup解决的,但是这样数据会慢的.
    我看ADO的帮助说明,有动态属性Unique Table,Unique Sechma,Unique Catalog可以设置一个更新表,以后的操作对其他表不起作用.
    但是不知道如何设置,设置了还出错,说什么"Unique Table不存在或没有完全定义".
      

  4.   

    由于多表关联时不同数据库有不同的处理方式,最常见的是:
    1、删除主表中的记录,从表中的关联记录是否删除?
    2、修改主表记录关联字段,关联表中的数据是否修改?为避免此矛盾,最好这么做:
    1、用SQL语句删除而非通过简单的DataSet.Delete
    2、通过关联所取数据不允许修改
      

  5.   

    呵呵,你不要用DATASOURCE来操纵,用SQL语句实现不就得了?
      

  6.   

    TO:Hank(星星农场) 
    老大,在BDE里面关联数据是不能修改的,只读.ADO里面可以,但是过犹不及,他可以更新所有的关联表啊,要不你试试.
    To:lihao_ningxia(耗子) 
    现在找不用SQL语句实现和不用LookKup解决的方法.
      

  7.   

    TO:  cy0212(宇文熵PRO)
    “通过关联所取数据不允许修改”难道你不明白,怎么样修改数据我外乎通过数据感应控件TDBGrid、TDBText等修改或者通过FieldByName()模式修改,在Delphi中不通过这些方式怎么修改?
      

  8.   

    我记的看李维的多层系统篇时,里面有一段是写关于DELPHI4中BDE多表更新的BUG问题,
    因为有D4的多表更新有BUG所以书里写了一段手动编写多表更新的代码,可以参考。
      

  9.   

    因为你用的是查询语句,所以Unique Table不好用,如果你真的要用的话就只能用缓存更新了,