2016-06-21 141 views
1

我有一個表格填充的視圖。我添加了一個按鈕來過濾數據。變量未找到

cFilter = UPPER(ALLTRIM(INPUTBOX("Filter sur :","Spectech France - Suivi DDP"))) 

SELECT vwDdp_all 

LOCATE FOR ALLTRIM(ref_client) = cFilter 
IF FOUND() 
    SET FILTER TO ref_client = cFilter 
    THISFORM.grdDDP.Column10.SetFocus 
ENDIF 

我得到一個「變量cFilter未找到」的錯誤。我不明白的是在上面的代碼已經運行之後出現錯誤;並且在調試器中,有罪的方法被指示爲「MyForm.grdDDP」。沒有其他的。我怎樣才能找到它實際尋找這個變量的地方?

+0

使用錯誤處理程序顯示錯誤發生在MyForm.grdDDP.Error(??) – Bernard

回答

3

變量cFilter必須是您的代碼才能工作的全局變量。

如果你不想使用全局變量,你可以做這樣的事情。

cFilter = UPPER(ALLTRIM(INPUTBOX("Filter sur :","Spectech France - Suivi DDP"))) 

SELECT vwDdp_all 

LOCATE FOR ALLTRIM(ref_client) = cFilter 
IF FOUND() 
    lcFiltClause = [ref_client = ']+cFilter+['] 
    SET FILTER TO &lcFiltClause 
    THISFORM.grdDDP.Column10.SetFocus 
ENDIF 
1

過濾器表達式必須在您在綁定遊標中導航時始終可見。你可以這樣做:

Local lcFilter 
lcFilter = Textmerge('ref_client = "<<m.cFilter>>"') 
Set Filter To &lcFilter 

,但設置過濾器,幾乎所有的開發商有它自己的「不使用」列表中的命令之一。特別是對於網格,您不應該使用「設置過濾器」。相反,您可以簡單地使用查詢作爲網格的來源。或者,如果該ref_client是一個索引字段,那麼你可以使用「設置範圍」來代替(它不需要全局變量或任何技巧)。

+0

過濾器是用戶需求(他們想模仿應用程序應該替換的巨大Excel工作表),但我會採取你的建議,並嘗試使用「設置範圍」。 – Bernard

+0

是的,設置過濾器不能很好地處理網格(觀察誤導的滾動條)。 –

+0

順便說一句,你可能想利用(現在免費並公開發布)Foxyclasses網格,特別是LocatorGrid類。 –