MasteringVFP/4/8
出自VFP Wiki
(修訂版本間差異)
小 |
小 (revert) |
||
(12個中途的修訂版本沒有顯示) | |||
第3行: | 第3行: | ||
說到 Filter, 他的歷史可是很悠久的呢~在 dBase 時代就已經存在了. | 說到 Filter, 他的歷史可是很悠久的呢~在 dBase 時代就已經存在了. | ||
設定 Filter 的方法很簡單,就是這樣子: | 設定 Filter 的方法很簡單,就是這樣子: | ||
- | < | + | <pre> |
set filter to 欄位=值 | set filter to 欄位=值 | ||
- | </ | + | </pre> |
而取消也同樣的容易: | 而取消也同樣的容易: | ||
- | < | + | <pre> |
set filter to | set filter to | ||
- | </ | + | </pre> |
在以前,執行完 set filter to 以後,最好要移動一下紀錄,讓 Filter 生效,例如 go top, 或是 go bottom...,否則你有可能發現,Filter 沒有生效... | 在以前,執行完 set filter to 以後,最好要移動一下紀錄,讓 Filter 生效,例如 go top, 或是 go bottom...,否則你有可能發現,Filter 沒有生效... | ||
下面我們就舉個簡單的例子,這裡是把所有客戶編號前面為 "S01" 的人都 browse 出來. | 下面我們就舉個簡單的例子,這裡是把所有客戶編號前面為 "S01" 的人都 browse 出來. | ||
- | < | + | <pre> |
use customers | use customers | ||
set filter to customers.id="S01" | set filter to customers.id="S01" | ||
go top | go top | ||
browse | browse | ||
- | </ | + | </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". |
在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 不好,只是,你必須要了解他的優缺點,與其他指令交互搭配使用,才能發揮它的效力.