FoxPro/Visual FoxPro - Filtros personalizados

   
Vista:

Filtros personalizados

Publicado por Norma (1 intervención) el 01/03/2012 00:00:08
Hola buen dia

Me pidieron hacer un programa que haga un filtro a una tabla a travez de un formulario, hice un formulario con un GRID, un TEXTBOX y un BUTTON que al presionarlo hace el filtro, el codigo que uso es
SELECT ALUMNOS
SET FILTER TO ALUMNOS.NOMBRE = THISFORM.NOMBRE.VALUE
THISFORM.LISTA.REFRESH

si me funciona, pero el profe nos dice que el operador logico puede cambiar es decir puedo buscar los =, >, < o distintos como puedo hacer eso que el simbolo cambie y que el nombre del campo tambien cambie, porque nos dice que el campo de busqueda puede ser por NOMBRE, APELLIDO PATERNO o MATERNO, como puedo hacer que cambien esos datos
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
Imágen de perfil de jean carlos

Filtros personalizados

Publicado por jean carlos (13 intervenciones) el 01/03/2012 00:50:48
SALUDO, ESPERO AYUDARTE EN LO QUE TE VOY A DAR: SI COLOCAS UN COMBO EN FORMA DE BOTON AL LADO DE TEXT Y LE COLOCAS ESTE CODIGO:

EN CLICK
SELECT TU TABLA
Thisform.Text1.Value = Nomusu
Thisform.Text2.Value = "" *** TIENES QUE TRABAJARLO EN FORMA DE TUS GRID
Thisform.Text2.SetFocus

INIT

SELECT TU TABLA
ThisForm.Combo3.ColumnCount = 1
ThisForm.Combo3.Columnwidths = "137,10"
Thisform.Combo3.RowSourceType = 2
Thisform.Combo3.RowSource = "Usuario.Nomusu,Nivel" **** PON TU TABLA, TUS CAMPOS QUE QUIERES QUE TE REFLEJEN EN EL CUADRO,

DESDE VENEZUELA, MARACAIBO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauricio

Filtros personalizados

Publicado por Mauricio (1367 intervenciones) el 01/03/2012 12:47:59
Bueno, en un FORM, puedes poner en el INIT:
CLOSE DATA ALL ** Para cerrar todas las tablas
PUBLIC op_lo
op_lo = ""
USE alumnos IN 0
SELECT alumnos
*******
luego en el FORM tener primero 4 textbox(en este orden: nombre, apellido paterno, apellido materno y el ultimo para digitar el operador logico)
Deberias ocultar el grid y mostrarlo luego en el boton filtrar
En el textbox4 (operador logico), en el VALID:
op_lo = THISFORM.text4.value
*
En el boton filtrar (CLICK):
* Recuerda que para escoger nombre o apellidos, solo uno debe tener datos, los otros 2 deben estar vacios.
*
IF !EMPTYTHISFORM.text1.value) ** Busqueda por nombre
SET FILTER TO ALUMNOS.NOMBRE op_lo THISFORM.NOMBRE.VALUE
ELSE
IF !EMPTYTHISFORM.text2.value) ** Busqueda paterna
SET FILTER TO ALUMNOS.ape_pat op_lo THISFORM.paterno.VALUE
ELSE * aca ya no se pregunta pues es el ultimo
SET FILTER TO ALUMNOS.ape_mat op_lo THISFORM.materno.VALUE
ENDIF
ENDIF
THISFORM.grid1.visible = .T.
THISFORM.LISTA.REFRESH
*
* Avisa como te funciona, si se corrige algo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Angel

Filtros personalizados

Publicado por Angel (11 intervenciones) el 18/04/2012 06:14:24
desde hace mucho VFP pasó de ser un lenguaje procedural a un lenguaje orientado a objetos
por lo tanto, úsenlo como tal
particularmente no recomiendo el uso de variables públicas
y en cuanto al tratamiento de datos, usar SET FILTER TO es manejar la información de la manera más inadecuada posible
usen propiedades contra variables públicas
y SELECT - SQL contra SET FILTER TO para la extracción de información
lo siguiente:
SET FILTER TO <campo> <operador> <variable u objeto>
no es correcto, SET FILTER TO evalúa constantemente la expresión lógica, y si en algún momento pierdes el enfoque de los elemenos en cuestión se obtendrán resultados no deseados y constantes mensajes de error
lo siguiente:
SELECT * FROM <tabla> WHERE <campo> <operador> <variable u objeto> INTO CURSOR curCursor
entrega un resultado y sobre ese resultado viene todo lo demás
saludos desde Perú
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar