MasteringVFP/4/8

出自VFP Wiki

跳轉到: 導航, 搜尋

強大的 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 不好,只是,你必須要了解他的優缺點,與其他指令交互搭配使用,才能發揮它的效力.