我想在明细表中设置过滤条件,可总是提示不能在明细表中设置过滤条件,各位高手之知道该如何设置才能过滤出符合要求的记录?谢谢了

解决方案 »

  1.   

    table.close;
    table.filter:='字段='+quotedstr('条件');
    table.filtered:=true;
    table.open;这样应该就可以了
      

  2.   

    可以有好多种方法
    可以利用TTable和TQuery的Filter属性来设,比如说你现在有一个员工表employee,而其中有以下几个字段,employeeNo,employeeName,Department,Salary,而我们要查的是要所有部门是销售部的员工,可以在Filter中设置Department='销售部',然后设置Filtered属性为True就OK了,这样就只能看到销售部的人,也可以在程序运行时动态改变,如果是一常量,可以用Table.Filter:='Department'+'='+'''销售部''';(字符串常量必须用三对单引号括起来)
    但如果是一变量,则就要用到format函数,如下
    Table.Filter:=Format('Department'+'='+'''%S''',[value]);value为已经赋值的一个字符串变量,也可以为其他形式,如Edit1.text;
    也可以用ApplyRange来设置范围:(它只适用于TTable控件)
    如下面一段代码可以选出工资范围在1000到5000内的员工:Table.setrangestart;
    Table.FieldByName('Salary').asinteger:=1000;
    Table.setrangeEnd;
    Table.FieldByName('Salary').asinteger:=5000;
    Table.ApplyRange;
    不过这种方法只适用于建立索引的字段。当然也可以用TQuery中的SQL来选择查询,在此,我就不多说了。
      

  3.   

    同一楼:
    table2.Filtered := false;
    table2.Filter := 'sid='+table1.FieldByName('id').AsString;
    table2.Filtered := true;
      

  4.   

    用TAdoDataSet的主从表可以很好解决你的问题,而且不用写代码,建议一试!