MasteringVFP/4/8
出自VFP Wiki
(修訂版本間差異)
BocerDomac (對話 | 貢獻) |
小 (revert) |
||
第1行: | 第1行: | ||
- | === | + | === 強大的 Filter === |
- | + | 在早期無法使用 SQL 的時候,要如何篩選資料呢??這時候就是用 Filter 啦... | |
- | + | 說到 Filter, 他的歷史可是很悠久的呢~在 dBase 時代就已經存在了. | |
- | + | 設定 Filter 的方法很簡單,就是這樣子: | |
<pre> | <pre> | ||
- | set filter to | + | set filter to 欄位=值 |
</pre> | </pre> | ||
- | + | 而取消也同樣的容易: | |
<pre> | <pre> | ||
set filter to | set filter to | ||
</pre> | </pre> | ||
- | + | 在以前,執行完 set filter to 以後,最好要移動一下紀錄,讓 Filter 生效,例如 go top, 或是 go bottom...,否則你有可能發現,Filter 沒有生效... | |
- | + | 下面我們就舉個簡單的例子,這裡是把所有客戶編號前面為 "S01" 的人都 browse 出來. | |
<pre> | <pre> | ||
use customers | use customers | ||
第20行: | 第20行: | ||
browse | browse | ||
</pre> | </pre> | ||
- | + | 注意喔,這裏為什麼說會把所有客戶編號前面為 "S01" 的人都 browse 出來呢??這個啊,是因為 VFP 可以選擇做或不做精確比對( set exact on / set exact off ). | |
- | + | 所謂的精確比對,意思就是必須要完全符合,條件才會成立,也就是說 "S01" 會等於 "S01" 而不等於 "S0100". | |
- | VFP | + | VFP 預設行為是非精確比對,也就是說 "S01" 會等於 "S0100" 也會等於 "S01". |
- | + | 這個設定可以直接到 ((MasteringVFP/1/4|Options)) 去設定,也可以直接使用 set exact 去設定為 on 或 off. | |
- | + | 到這裡,相信都明白 Filter 如何使用了吧~ | |
- | + | 不過,如果你 Remote View + Filter 的時候,會發現效率很慢. | |
- | + | 這是因為 Filter 會需要所有資料,才能做篩選的動作,所以 Remote View 會試圖下載所有遠端資料回來.但這也不是說 Filter 不好,只是,你必須要了解他的優缺點,與其他指令交互搭配使用,才能發揮它的效力. |
在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 不好,只是,你必須要了解他的優缺點,與其他指令交互搭配使用,才能發揮它的效力.