set filter的作用我就不多說了.但如果set filter時條件中含有變量,那就要注意了....例
Select 0
use C_Lb &&打開表
Lb=Rszd_Lb_F &&取字段值
use
select C_Detail &&打開另一個要set filter的表
Set filter to Rszd_Lb_F=Lb
假設上面代碼在button1中執行.
而在button2中如下代碼
private all
Select C_Detail
replace Xz_F with 1 all
這樣就會報錯..說找不到變量Lb
爲什麼這樣呢.....以下是我的估計
由於Set filter的條件只是起篩選作用,加了後,每次打開該表就會先通過該條件把數據屏蔽不要的部份.
而filter中條件語句中含有變量,那麼每次調用該表時,該變量都要存在,否則無法起到屏蔽數據作用....而報找不到變量的錯.
所以要實現上面的功能..要把button1的代碼更改如下:
Select 0
use C_Lb &&打開表
Lb=Rszd_Lb_F &&取字段值
use
h1="Rszd_ Lb_F='"+Lb+"'"
select C_Detail &&打開另一個要set filter的表
Set filter to &h1.
因爲用了宏替換,所以在set filter時,就把變量內容全部讀出,變成了字符串,這樣就不存在每次要訪問變量的問題