MasteringVFP/4/8

出自VFP Wiki

(修訂版本間差異)
跳轉到: 導航, 搜尋
(revert)
 
(11個中途的修訂版本沒有顯示)
第3行: 第3行:
說到 Filter, 他的歷史可是很悠久的呢~在 dBase 時代就已經存在了.
說到 Filter, 他的歷史可是很悠久的呢~在 dBase 時代就已經存在了.
設定 Filter 的方法很簡單,就是這樣子:
設定 Filter 的方法很簡單,就是這樣子:
-
<code>
+
<pre>
set filter to 欄位=值
set filter to 欄位=值
-
</code>
+
</pre>
而取消也同樣的容易:
而取消也同樣的容易:
-
<code>
+
<pre>
set filter to
set filter to
-
</code>
+
</pre>
在以前,執行完 set filter to 以後,最好要移動一下紀錄,讓 Filter 生效,例如 go top, 或是 go bottom...,否則你有可能發現,Filter 沒有生效...
在以前,執行完 set filter to 以後,最好要移動一下紀錄,讓 Filter 生效,例如 go top, 或是 go bottom...,否則你有可能發現,Filter 沒有生效...
下面我們就舉個簡單的例子,這裡是把所有客戶編號前面為 "S01" 的人都 browse 出來.
下面我們就舉個簡單的例子,這裡是把所有客戶編號前面為 "S01" 的人都 browse 出來.
-
<code>
+
<pre>
use customers
use customers
set filter to customers.id="S01"
set filter to customers.id="S01"
go top
go top
browse
browse
-
</code>
+
</pre>
注意喔,這裏為什麼說會把所有客戶編號前面為 "S01" 的人都 browse 出來呢??這個啊,是因為 VFP 可以選擇做或不做精確比對( set exact on / set exact off ).
注意喔,這裏為什麼說會把所有客戶編號前面為 "S01" 的人都 browse 出來呢??這個啊,是因為 VFP 可以選擇做或不做精確比對( set exact on / set exact off ).
所謂的精確比對,意思就是必須要完全符合,條件才會成立,也就是說 "S01" 會等於 "S01" 而不等於 "S0100".
所謂的精確比對,意思就是必須要完全符合,條件才會成立,也就是說 "S01" 會等於 "S01" 而不等於 "S0100".
第28行: 第28行:
不過,如果你 Remote View + Filter 的時候,會發現效率很慢.
不過,如果你 Remote View + Filter 的時候,會發現效率很慢.
這是因為 Filter 會需要所有資料,才能做篩選的動作,所以 Remote View 會試圖下載所有遠端資料回來.但這也不是說 Filter 不好,只是,你必須要了解他的優缺點,與其他指令交互搭配使用,才能發揮它的效力.
這是因為 Filter 會需要所有資料,才能做篩選的動作,所以 Remote View 會試圖下載所有遠端資料回來.但這也不是說 Filter 不好,只是,你必須要了解他的優缺點,與其他指令交互搭配使用,才能發揮它的效力.
-
[http://www.hg-fix.com/ 数据恢复]
 
-
[http://www.hg-fix.com/ 硬盘数据恢复]
 
-
[http://www.hg-fix.com/ 磁带数据恢复]
 
-
[http://www.hg-fix.com/ raid数据恢复]
 
-
[http://www.hg-fix.com/ 磁盘阵列数据恢复]
 
-
[http://www.hg-fix.com/diskrecover.htm 数据恢复]
 
-
[http://www.hg-fix.com/taperecover.htm 数据恢复]
 
-
[http://www.hg-fix.com/raidrecover.htm 数据恢复]
 
-
[http://www.hg-fix.com/ 数据修复]
 
-
[http://www.hg-fix.com/ 硬盘数据修复]
 
-
[http://www.hg-fix.com/ 磁带数据修复]
 
-
[http://www.hg-fix.com/ raid数据修复]
 
-
[http://www.hg-fix.com/diskrecover.htm 数据修复]
 
-
[http://www.hg-fix.com/raidrecover.htm 数据修复]
 
-
[http://www.hg-fix.com/taperecover.htm 数据修复]
 
-
[http://www.hg-fix.com/ 磁盘阵列数据修复]
 

在2009年9月1日 (二) 02:05的最新修訂版本

強大的 Filter

在早期無法使用 SQL 的時候,要如何篩選資料呢??這時候就是用 Filter 啦... 說到 Filter, 他的歷史可是很悠久的呢~在 dBase 時代就已經存在了. 設定 Filter 的方法很簡單,就是這樣子:

set filter to 欄位=值

而取消也同樣的容易:

set filter to

在以前,執行完 set filter to 以後,最好要移動一下紀錄,讓 Filter 生效,例如 go top, 或是 go bottom...,否則你有可能發現,Filter 沒有生效...

下面我們就舉個簡單的例子,這裡是把所有客戶編號前面為 "S01" 的人都 browse 出來.

use customers
set filter to customers.id="S01"
go top
browse

注意喔,這裏為什麼說會把所有客戶編號前面為 "S01" 的人都 browse 出來呢??這個啊,是因為 VFP 可以選擇做或不做精確比對( set exact on / set exact off ). 所謂的精確比對,意思就是必須要完全符合,條件才會成立,也就是說 "S01" 會等於 "S01" 而不等於 "S0100". VFP 預設行為是非精確比對,也就是說 "S01" 會等於 "S0100" 也會等於 "S01". 這個設定可以直接到 ((MasteringVFP/1/4|Options)) 去設定,也可以直接使用 set exact 去設定為 on 或 off.

到這裡,相信都明白 Filter 如何使用了吧~ 不過,如果你 Remote View + Filter 的時候,會發現效率很慢. 這是因為 Filter 會需要所有資料,才能做篩選的動作,所以 Remote View 會試圖下載所有遠端資料回來.但這也不是說 Filter 不好,只是,你必須要了解他的優缺點,與其他指令交互搭配使用,才能發揮它的效力.