FoxPro/Visual FoxPro - SET FILTER TO Problema

 
Vista:
sin imagen de perfil

SET FILTER TO Problema

Publicado por Jose (8 intervenciones) el 24/08/2016 07:54:58
Buenas.
Quería saber cómo utilizar este comando para realizar búsquedas. Básicamente, 2 en especial. O SI EXISTE OTRA FORMA MÁS FÁCIIL, MEJOR.

La primera de ellas es filtrar los datos en una grilla por fecha.
He intentado filtrar los datos por fecha pero funciona y al mismo tiempo no. Porque pasa que al filtrar una fecha cualquiera, me muestra las de esa fecha. Pero al ir de nuevo al text para hacer otra busqueda de fecha, o presionar en cualquier lado hace que me muestren todas las fechas.

Mi código es algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SET FILTER TO
SET FILTER TO fecha = thisform.text10.Value
 
 
thisform.grid1.recordsource="tabla_ventas"                      ¿Podría tener algo que ver con el recordousource de la grilla?
thisform.grid1.refresh
 
*thisform.nomregistros
 
thisform.text1.Value=nventa
thisform.text2.Value=fecha
thisform.text14.Value=vendedor
thisform.text8.Value=idcliente
thisform.text4.Value=idproducto
thisform.text5.Value=producto
thisform.text6.Value=cantidad
thisform.text7.Value=precio
thisform.optiongroup1.Value=factura
 
thisform.grid1.refresh


Y la otra es de filtrar por nombre o por letra.
En este caso, no tengo idea de cómo funciona, con ALLTRIM(UPPER(thisform.value) creo que iba?

Desde ya, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

SET FILTER TO Problema

Publicado por Fidel José (657 intervenciones) el 24/08/2016 13:24:32
1) SET FILTER es un comando obsoleto. Si trabajas en red, es un infierno de lento. Lo podés utilizar para filtrar elementos en un cursor o en una tabla local, relativamente pequeña.
2) Si usas SET FILTER, no lo hagas depender del valor de un cuadro de texto, porque al limpiar el cuadro se libera el filtro. Para ello, crea una propiedad del formulario y filtra por la propiedad.
1
2
3
4
5
6
7
8
9
10
11
12
13
* Lostfocus de TExt10
ADDPROPERTY(thisform,"MyFilter",this.value)
SELECT (thisform.Grid1.REcordSource)
IF EMPTY(THIS.VALUE)
	SET FILTER TO
ELSE
	SET FILTER TO FECHA = THISFORM.Myfilter
	GO TOP
ENDIF
WITH Thisform.GRid1
	.Refresh
	.SETFOCUS()
ENDWITH

3) Trata de olvidarte de SET FILTER. Se reemplaza absolutamente por SELECT SQL creando un cursor (o tabla).
Utilizando SELECT SQL, puede que te convenga utilizar un formulario secundario donde muestras los datos filtrados (el cursor obtenido) o que quieras ver eso en el mismo control grid. Se pueden hacer ambas cosas, lo que cambia es la técnica.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar