有两个表,A表和B表,两表都有name字段和aa字段,其中B表中的name字段的值是在A表的name字段值中出现过的,而aa字段可以是A表中没有的。    现在要求显示A表中,在两表的aa字段中包含某个x值的记录。如:
  
     A表                    B表
name     aa            name      aa
小花     葡萄          小红      葡萄
小红     西瓜          小兰      柿子如果要求显示aa字段为'葡萄'的记录,那么A表的‘小花’和‘小红’两个记录都要显示。
这个能不能通过过滤器filter来实现?

解决方案 »

  1.   

    select name from A where aa = '葡萄'
    union
    select name from B where aa = '葡萄'
      

  2.   

    选择出B表的数据后,设置A表的FILTER属性为
    FILTER := '(name='''+ b.FieldByName('name').asstring +''') or aa='''+
               b.FieldByName('aa').asstring+''')';
    Filtered := True;
      

  3.   

    你的需求好像不是很明确
    如果最终结果是在知道aa的值的情况下取得上述两条记录并显示出来
     swayi21(微斯人) 的完全可以做到,
    select name from A where aa = '葡萄'
    union
    select name from B where aa = '葡萄'
    当然你可以把'葡萄'换成参数,然后接受用户输入并执行查询,
    things(平) (走在未知世界) 的办法应可将表A中符合条件的记录全部筛选出来,如要传递参数应写在筛选表B的数据集中。
      

  4.   

    不能通过过滤器filter实现,应该使用SQL语句.