未找到变量

Variable not found

我在一个由视图填充的表单上有一个网格。我添加了一个按钮来过滤数据。

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

我收到 "Variable cFilter not found" 错误。我不明白的是错误是在上面的代码已经运行之后出现的;在调试器中,有罪的方法表示为"MyForm.grdDDP"。没有其他的。我怎样才能找到它实际在哪里寻找这个变量?

变量 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

在绑定游标中导航时,过滤器表达式必须始终可见。你可以这样做:

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

但是,set filter 是几乎所有开发人员都在其 "not to use" 列表中使用的命令之一。特别是对于网格,你不应该使用 "set filter"。相反,您可以简单地使用查询作为网格的来源。或者,如果 ref_client 是一个索引字段,那么您可以使用 "Set range" 代替(它不需要全局变量或任何 & 技巧)。