有二表:A和B
A:
a,b  其中a是主键
B:
c,a,d   其中c是主键1、现用一查询TADOQuery提取c,b,d,如何做?
2、向TADOQuery中更新(添加、删除、修改)记录时,只更新B表,A表不变。如何做?或者,实现上述功能有什么其他好的办法?只要是使用ADO的都可以。小弟急用。恳请各位兄弟姐妹出手相助。谢

解决方案 »

  1.   

    你是不是打算用a来关联?
    var
      string1:string;
    begin
    TADOQUERY1.close;
    TADOQUERY1.SQL.CLEAR;
    string1:='select A.b,B.c,B.d from A,B where A.a=B.a  ';
    TADOQUERY.SQL.ADD(string1);
    TADOQUERY.OPEN;
    end;第二个我觉得你问的很奇怪,如果不加外键,你爱怎么更新就怎么更新
      

  2.   

    用的是什么数据库?
    如果是sql server
    楼上说的是没问题的
      

  3.   

    A表与B表是什么关系?你用sql语句就可达到你的要求。
      

  4.   

    2:
    update a set a.1= ,a.2=.....
    insert into a  values (....)
      

  5.   

    1、select b.c,a.b,b.d from A inner join B on A.a=B.c 
    2、update B set B.列='你的内容' from A,B where A.a=B.c
      

  6.   

    1. select B.c, B.d, A.b from A left join B on A.a = B.a
    2. 你不更新A就不會更新A
      

  7.   

    1.select B.c,A.b,B.d from A,B where A.a=B.a
    2.直接对B更新A是不会变的
      

  8.   

    我的意思是利用问题1的TADOQuery更新B表,而不更新A表
      

  9.   

    select B.c,A.b,B.d from A,B where A.a=B.a
    第二个问题没听明白
      

  10.   

    不的,我也碰到过,第一个问题可以简单解决,就是第二个问题。
    第二个问题我用
    adoquery1.insert;
    然后b表中的一些字段用dbedit连接了.
    可是会出一些错误,且a表也增加了记录。
    这个问题什么解决啊?
      

  11.   

    有二表:A和B
    A:
    a,b  其中a是主键
    B:
    c,a,d   其中c是主键
    ========================================
    A.a与B.a的关系?
    是否为A.a的数据B.a中一定有?
    就是B.a是不是外键?
      

  12.   

    因为这个adoquery是联合查询,它会向B.c,A.b,B.d 中添入数据。也就是同时向两个表中添加数据。我也遇到过同样问题,我的解决方法是用Adoquery1联合查询,用Adoquery2来向B添加新数据。
    不知道是不是这个意思!!!!呵呵~~~~
      

  13.   

    A.a与B.a的关系?没关系
    ==========================
    没关系那你就直接对B表进行操作,管A表什么事呢?
      

  14.   

    huluobowangmeng(笨到底)说的对
    就是那个意思,后来,我也只好用这个办法。
      

  15.   

    A.a和B.a是一对多的关系
    A.a是主键
    B.a是外键huluobowangmeng(笨到底)说的对,就是那个意思.
    有没有更好的办法?
      

  16.   

    你可以在一个TADOQuery里面做,
    选进行相关查询,就是问题一:var
      str:string;
    beginstr:='select A.b,B.c,B.d from A,B where A.a=B.a  ';TADOQuery1.close;
    TADOQuery1.sql.clear;
    TADOQuery1.sql.add(str);
    TADOQuery1.open;
    end;接下就是增删改操作:
    str := 'update ......';TADOQuery1.close;
    TADOQuery1.sql.clear;
    TADOQuery1.sql.add(str);
    TADOQuery1.execSql;马上再重新选一次:str:='select A.b,B.c,B.d from A,B where A.a=B.a  ';TADOQuery1.close;
    TADOQuery1.sql.clear;
    TADOQuery1.sql.add(str);
    TADOQuery1.open;不知这样是否满足要求.
      

  17.   

    但是我们头要求在gridEh中显示。在删除的时候grid就会闪一下,出现一些用户不应该看到的东西。所以在同一个adoqury中操作的这种思路被Pass掉了!!