Recorrer grid y obtener valores . Foxpro

Por aquí molestándote. ¿Cómo puedo recorrer las lineas del grid para seleccionar los registros que veo en pantalla? Si utilizo "THISFORM.Grid1.Column1.Text1.Value", el valor que me regresa es solo el de la primera linea del grid. Lo que quiero es poder obtener algo así como un "ALL" de todas las lineas que veo en la pantalla! No me refiero a la tabla que esta enlazada con el grid... Sino al grid en si! Algo así como ALL(THISFORM. Grid1. Column1. Text1. Value), o VAL(ALL(THISFORM. Grid1. Column1. Text1. Value)) o algo así...! Perdón por poner el ALL.. No creas que estoy inventado nuevo código fox.. Jajajaja! Es solo para explicarte.. Ilustrativamente! Lo que pasa es que quiero crear un SET FILTER con los datos de un grid... Con varias lineas para poder establece un rango. Si pongo SET FILTER TO tabla. Campo => (THISFORM. Grid1. Column1. Text1. Value), el valor que regresa en el filtro es solo el de la primera linea del grid... Y los que están en las filas de abajo del grid, no son evaluados!

1 Respuesta

Respuesta
1
Ok, creo que entendí
En resumen quieres tener la posibilidad de filtrar en base a un rango de datos, en cualquiera de las columnas del grid. Fácil: usando set filter pero con un "rango de registros que deben cumplir la condición".
Un ejemplo clásico: filtrar los registros cuyos datos sean los que el "campo fecha" sea digamos entre enero y diciembre de 2008.
select MiTabla
set filter to dtoc(miFecha) >='01/01/2008" and dtoc(miFecha) <='31/12/2008"
Es decir que Set Filter ya tiene la estructura para mostrar sólo aquellos registros que cumplan el rango que hayas definido.
Avísame.
Ok!!! Comprendido! Ahora la cuestion es poder establecer ese rango con valores de la grid!!! Al usar SET FILTER TO tabla.campo1 >= (THISFORM.Grid1.Column1.Value), el filtro evalua  unicamente "la primera linea" del grid. Si por ejemplo en la columna 1 del grid tengo:
Columna 1
1
2
3
4
5
Al usar el SET FILTER anterior que te mostré, solo busca el primer registro: "1"! Es ahí donde donde tengo el problema: no se como hacer para que el SET FILTER tome desde 1 hasta 5! Me comprendes! Yo si comprendo muy bien tu planteamiento y gracias! Lo que no puedo es "ranguear" las lineas del grid que veo en pantalla al usar set filter!
El grid depende del cursor o tabla que lo rellena por tanto el set filter lo DEBES aplicar sobre el origen de datos del grid.
Cualquier operación (delete, insert, update, set filter, etc) que se realice en el origen de datos de grid, se refleja en el grid.
Entonces volviendo al set filter, tú le pones lo que quieres "filtrar" o buscar:
select miTabla
set filter to inlist(MiCampo,1,2,3,4,5)
Thisform. Grid1. Refresh
Con esto, el grid, debe mostrar sólo los registros cuyo valor en el campo "MiCampo", sea 1 ó 2 ó 4 ó 5.
No se hace nada contra el grid, sino contra su origen de datos. Es la práctica.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas