当前位置: 代码迷 >> VFP >> 一直没注意的有关问题,set filter to 的同步执行
  详细解决方案

一直没注意的有关问题,set filter to 的同步执行

热度:1125   发布时间:2013-02-26 00:00:00.0
一直没注意的问题,set filter to 的同步执行
很简单的两句话

USE fgb
SET FILTER TO grade=4
?teacher
?teacher

第一行显示的是整个表首记录 teacher 字段
第二行显示的才是过滤后的符合条件的字段

看来set filter 也需要时间,可怎么处理这个问题呢?我需要类似同步执行的方式,set filter耗时不会太多,我可以等待啊

------解决方案--------------------------------------------------------
不是时间的问题,set filter to ... 而未执行任何与记录指针有关的操作命令前,记录指针不会指向正确的位置

USE fgb
SET FILTER TO grade=4
inkey(3600) && 你就是等上一个小时也一样
?teacher

应该这样
USE fgb
SET FILTER TO grade=4
locate && 或者 goto top
?teacher

------解决方案--------------------------------------------------------
不是耗时,是 SET FILTER TO grade=4 并不改变当前记录。
------解决方案--------------------------------------------------------
如果只是
USE fgb
SET FILTER TO grade=4
?teacher
?teacher

2次的值肯定是一样,除非执行了改变记录的操作。
------解决方案--------------------------------------------------------
set filter to grade=5
go top && 需要重新定位一下数据库,我都是这样,没问题的!
?teacher

------解决方案--------------------------------------------------------
建议楼主,及时结贴,让【待解决】贴子少一点。
------解决方案--------------------------------------------------------
set filt to 命令后,必须进行指针移动才使筛选生效
------解决方案--------------------------------------------------------
手册中已经说的很清楚了


set filter 命令
请参阅

指定访问当前表中记录时必须满足的条件。

语法

SET FILTER TO [lExpression]

参数
lExpression

指定记录必须满足的条件。
如果当前表在 lExpression 中指定的一个或多个字段上建立了索引,Visual FoxPro Rushmore 技术会优化基于这个或这些字段的查询。

说明

如果使用 set filter 命令,则表中只有满足逻辑表达式 lExpression 指定的条件的记录才可以被访问。所有访问该表的命令都必须遵守 SET FILTER 指定的条件。对于每个打开的表,都可以设置单独的筛选条件。
只有当记录指针在表中移动时,才计算由 SET FILTER 指定的条件。
不带 lExpression 发出 SET FILTER TO 命令将关闭当前表的选择器。
注意:SELECT - SQL 不遵守当前的筛选条件。
  相关解决方案