Note | 该命令在头文件中定义,将由 X# 预处理器预处理为函数调用。如果禁用标准头文件 (-nostddefs),该命令将不可用。如果告诉编译器使用不同的标准头文件(-stddef ),则此命令也可能不可用。 |
设置或清除当前工作区的筛选条件。
SET FILTER TO [<lCondition>]
TO <lCondition> | 用于筛选记录的条件。 |
不带参数的 SET FILTER TO 会清除过滤条件。 |
设置过滤器后,不符合过滤器条件的记录在逻辑上将不可见。 过滤器条件可以使用 DBFilter() 函数以字符串形式返回。
也就是说,对逻辑记录执行的数据库操作将不会考虑这些记录,除非是通过记录编号专门访问这些记录。 因此,您可以 GOTO 已过滤的记录,或使用 RECORD <nRecord> 作用域处理记录。
注意:一旦设置了过滤器,在记录指针从当前位置移动之前不会被激活。 您可以使用 GO TOP 激活它。
带有条件的 SET FILTER TO 在功能上等同于 DbSetFilter(),条件用代码块和字符串表示。 不带参数的 SET FILTER TO 相当于 DBClearFilter()。
提示:如果您使用的 RDD 支持优化,请使用 SET OPTIMIZE 控制 RDD 是否会根据工作区中的可用记录优化过滤器搜索。
可见性: 与 SetDeleted() 一样,过滤器对 INDEX 和 REINDEX 没有影响。 要创建条件索引,请使用 INDEX 命令的 FOR 条件。
此示例将 EMPLOYEE.DBF 筛选为年龄大于 50 岁的记录:
USE employee INDEX name NEW
SET FILTER TO Age > 50
LIST Lastname, Firstname, Age, Phone
SET FILTER TO
XSharp.RT.DLL
DbClearFilter(), DbFilter(), DbSetFilter(), SET OPTIMIZE, SetDeleted()