在第一个queryA中使用SQL语句得到了A表的很多条数据,这些数据有AID和AMXID(明细ID)两个字段,现在要根据queryA中所有数据的AID和AMXID的值,用另外一个queryB去查B表的数据,请问我怎么把前面queryA的AID和AMXID两个参数传递到后面的查询中去???
谢谢!!!

解决方案 »

  1.   


    begin
      QueryB.Close;
      QueryB.Sql.Text := Foramt('select * from B where (字段1=%s) and (字段2=%s)',[ QueryA.FieldValues['AID'],QueryA.FieldValues['AMXID'] ]);
      QueryB.Open;
    end;//具体应用中,还要根据你的字段类型略有改动。
      

  2.   

    //至于是传递QueryA哪一条记录的AID、AMXID值,那就要结合QueryA的记录游标移动了(First、Next、Last等)Foramt ---> Format  -_-
      

  3.   

    我的意思是所有满足条件的记录都查询出来,即QueryA的游标不移动,请问怎么实现???
      

  4.   

    我的意思是所有满足条件的记录都查询出来,即QueryA的游标不移动,请问怎么实现???
    --------------------没看明白,能不能重新表达一下。
      

  5.   

    ?看一下,你是不是这个意图:表A:AID   AMXID   其他字段
    -----------------------
    1      11
    2      22
    表B:
    AID   AMXID   其他字段
    -----------------------
    1      11     111
    2      11     211
    1      22     122
    2      22     222
    1      11     111
    3      33     333要得到的查询结果是:AID   AMXID   其他字段
    -----------------------
    1      11     111
    2      22     222
    1      11     111
    如果是这个意思,联合查询就可以了:'select b.aid, b.amxid, b.其他字段 from a,b where (a.aid=b.aid) and (a.amxid=b.amxid)'
      

  6.   

    我的意思是,类似把queryA的结果作为一个临时表传递过来,这样B表可以直接与该临时表关联进行查询,现在问题是怎么把queryA结果作为数据集传递过来?
      

  7.   

    不必使用两个Query,也不必使用临时表,表AB直接联合查询就可以。上面已经给你写了表A与表B联合查询的例子。或者是我一直没有懂你的意思。我只能帮你这些了。
      

  8.   

    先谢谢你;)
    之所以我要用几个query,是因为我的B的结果要根据A的查询结果出来,然后还有C表的查询结果又要根据B的查询结果来确定,同样D、E、F、G、H(总共8个表)都要根据前面的查询结果得出。同时ABCDEFGH每个表都不是一个单纯的表,而是由主从表组合进行查询的。所有想直接把前一步查询的结果作为一个数据集直接传过来与B表等进行关联查询,然后再把B的结果与C进行关联查询,以此类推到最后。不知道我说清楚了没有!;)
      

  9.   

    如果是这个意思,联合查询就可以了:'select b.aid, b.amxid, b.其他字段 from a,b where (a.aid=b.aid) and (a.amxid=b.amxid)'
      

  10.   

    先谢谢你;)
    之所以我要用几个query,是因为我的B的结果要根据A的查询结果出来,然后还有C表的查询结果又要根据B的查询结果来确定,同样D、E、F、G、H(总共8个表)都要根据前面的查询结果得出。同时ABCDEFGH每个表都不是一个单纯的表,而是由主从表组合进行查询的。所有想直接把前一步查询的结果作为一个数据集直接传过来与B表等进行关联查询,然后再把B的结果与C进行关联查询,以此类推到最后。不知道我说清楚了没有!;)