Puedes emplear algo parecido a esto:
cFiltro = "UPPER("+campo+") = UPPER("+compara+")"
SET FILTER TO &cFiltro
thisform.gridClientes1.refresh
No sé si habrá algún error, pero espero que captes el sentido, que es que en el filtro sólo hayan expresiones, no variables que puedan perder el ambito de uso.
Habría otras opciones como hacer la variable Compara pública o emplear una propiedad del form y en vez de Compara poner Thisform.Compara, pero personalmente veo que estás son soluciones más problemáticas que la que te comento.
Un saludo.
José Luis.
>Hola a todos
>
>Tengo un formulario que quiero utilizar para buscar clientes por diferentes criterios. En el form tengo un TextBox, un grid, y un botón. Este formulario devolverá un codigo al hacer doble clic en el grid, este codigo lo guardo en una propiedad del form y lo actualizo en el evento AfterRowcolChange de la suginete forma:
>
>thisform.retorno = clientes.id
>
>En el textbox introduzco una cadena para el filtrado y pulso el botón, en el grid se reflejan los cambios (solo aparecen los registros filtrados). Para esto utilizo:
>
>select clientes
>SET FILTER TO UPPER(&campo) = UPPER(compara)
>thisform.gridClientes1.refresh
>
>El problema es que cuando hago clic sobre una fila del grid me da el error:
>
>"No se encuentra la variable compara"
>
>Si alguien sabe porqué le agradecería la respuesta.
>
>Saludos.
>Iñaki.
Quidquid latine dictum sit, altum sonatur