Filter 属性      
指示 Recordset 中的数据的过滤器。设置和返回值
设置或返回 Variant 值,该值包含下列内容之一: 
条件字符串 — 由一个或多个用 AND 或 OR 操作符连接的单个子句组成的字符串。
书签数组 — 指向 Recordset 对象中的记录的唯一书签值数组。FilterGroupEnum 值。 
说明用 Filter 属性选择性地屏蔽 Recordset 对象中的记录。已过滤的 Recordset 成为当前游标。基于当前游标返回值的其他属性将受到影响,如 AbsolutePosition、AbsolutePage、RecordCount 及 PageCount。这是因为将 Filter 属性设置为特定值可将当前记录移动到满足新值的第一个记录。条件字符串由 FieldName-Operator-Value 格式(如“LastName = 'Smith'”)子句组成。通过连接单独的 AND(如“LastName = 'Smith' AND FirstName = 'John'”)或 OR(如“LastName = 'Smith' OR LastName = 'Jones'”)子句可以创建复合子句。关于条件字符串,请遵循以下规则: FieldName 必须是 Recordset 中有效的字段名。如果字段名包含空格,必须将字段名括在方括号中。Operator 必须是下列字符串之一:<、>、<=、>=、<>、= 或 LIKE。Value 是用于与字段值进行比较的值(如 'Smith'、#8/24/95#、12.345 或 $50.00)。字符串使用单引号,日期使用磅符号 (#)。数字可以使用小数点、美元符号和科学符号。如果 Operator 为 LIKE,则 Value 可以使用通配符。只允许使用星号 (*) 和百分号 (%) 通配符,而且必须是字符串的尾字符。Value 不能为 Null。 
注意   若要在过滤 Value 中包括单引号 ('),请用两个单引号表示一个引号。例如,若要过滤 O'Malley,则条件字符串应为“col1 = 'O''Malley'”。若要在过滤值的开始和结尾处都包括单引号,请用磅符号 (#) 将字符串括起来。例如,若要过滤“'1'”,则条件字符串应为“col1 = #'1'#”。 AND 和 OR 在级别上没有先后之分。可用括号将子句分组。但不能象下例所示那样先将由 OR 连接的子句分组,然后再用 AND 将该组连接到其他子句: 
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'与之相反,可将此过滤构造为 
(LastName = 'Smith' AND FirstName = 'John') OR (LastName = 'Jones' AND FirstName = 'John')在 LIKE 子句中,可在模式的开头和结尾使用通配符(如 LastName Like '*mit*'),或者只在模式的结尾使用通配符(如 LastName Like 'Smit*')。 
通过仅允许查看诸如上次调用 UpdateBatch 方法时受到影响的记录,过滤常量可以更容易地解决在批更新模式中发生的单个记录冲突。由于与基本数据冲突(例如,记录已被另一用户删除),设置 Filter 属性本身可能会失败。在这种情况下,提供者向 Errors 集合返回警告但并不终止程序执行。只有在所有提出请求的记录上都发生冲突时才会发生运行时错误。用 Status 属性定位有冲突的记录。将 Filter 属性设置为零长度字符串 ("") 与使用 adFilterNone 常量具有相同效果。只要设置了 Filter 属性,当前记录位置都将移动到 Recordset 中已过滤记录子集的第一个记录处。同样,当 Filter 属性被清空时,当前记录位置都将移动到 Recordset 的第一个记录处。通过书签值可以构造一个与 Filter 属性配合使用的数组,有关书签值的解释,请参阅 Book 属性。

解决方案 »

  1.   

    谢谢二位! 能给出一个简单的例子吗?就象我说的那样。。我的要求不是很烦
     只是筛选 不会遇到很复杂的。。能具体一些吗?最好写出这个sql语句 谢谢!!!
      

  2.   

    filter啊
    首先你
    query1.filter:=N;//N为你的条件
    query1.filtered:=true;即可啊
    N为条件表达式,可以是<,>,<=,<=,=
      

  3.   

    dst:tadodataset;dst.close
    dst.commandtext:='select * from maintb'
    dst.open;dst.Filtered :=false; 
    dst.filter:='a>0 and b>3'
    dst.filtered:=true;下次
    dst.Filtered :=false; 
    dst.filter:='a>0 and b>2'
    dst.filtered:=true;
    即可