Filtro

Hola, es la primera vez que escribo y aunque me imagino que es algo muy sencillo no he podido solucionarlo, espero tu puedas ayudarme.
Necesito hacer un filtro de búsqueda en la cual pueda seleccionar un rango de una fecha, por ejemplo buscar los datos de una tabla de Enero a Marzo de un año en especifico, para esto tengo 3 combobox en el formulario, un botón de ejecución y un grid en donde se despiegan los datos de la búsqueda.
En los primeros 2 combobox selecciono de que mes a que mes es la búsqueda y en el tercer combobox selecciono de que año.
La búsqueda funciona correctamente sin el tercer combobox, creo que el problema esta en la validación del año.
El código que empleo en el ClickEvent del botón de ejecución es el siguiente:
local m1,m2,m3,v1
m1 = thisform.combo2.value
m2 = thisform.combo3.value
m3 = thisform.combo4.value
sele mantodet
DO CASE
CASE thisform.TextNumero.visible = .t.
v1 = thisform.TextNumero.value
thisform.grid1.recordsource = "SELECT crucero, falla, muni, estado, fecha, fecharepara ;
FROM mantodet WHERE numcruce = v1 AND month(fecha) >= m1 AND month(fecha) <= m2 ;
AND year(fecha) = m3 into cursor resultados"
case thisform.ComboCruceros.visible = .t.
if len(thisform.ComboCruceros.value) = 0
v1 = alltrim(thisform.ComboCruceros.TEXT)
else
v1 = alltrim(thisform.ComboCruceros.value)
endif
thisform.grid1.recordsource = "SELECT crucero, falla, muni, estado, fecha, fecharepara ;
FROM mantodet WHERE crucero = v1 AND month(fecha) >= m1 AND month(fecha) <= m2 ;
AND year(fecha) = m3 into cursor resultados"
case thisform.ComboFallas.visible = .t.
v1 = thisform.ComboFallas.value
thisform.grid1.recordsource = "SELECT crucero, falla, muni, estado, fecha, fecharepara ;
FROM mantodet WHERE falla = v1 AND month(fecha) >= m1 AND month(fecha) <= m2 ;
AND year(fecha) = m3 INTO CURSOR resultados"
case thisform.ComboCausas.visible = .t.
v1 = thisform.ComboCausas.value
thisform.grid1.recordsource = "SELECT crucero, falla, muni, estado, fecha, fecharepara ;
FROM mantodet WHERE causa = v1 AND month(fecha) >= m1 AND month(fecha) <= m2 ;
AND year(fecha) = m3 into cursor resultados"
ENDCASE
thisform.text4.value = _TALLY
thisform.refresh()
El "Value" para cada combobox es en el de los meses =month(date()) y en el del año =year(date())
¿Qué estoy haciendo mal?
Espero puedas ayudarme.
Gracias.

1 respuesta

Respuesta
1
intenta asignando los valores de los combos a variables antes de hacer el filtro y no referirte digamos v1 = alltrim(thisform.ComboCruceros.TEXT) en lugar de ello crea primero las variables y asignales ese valor.
La otra checa que realmente el tipo de valor devuelto por el combo sea numérico.
? type('variable') o si no
? type('thisform.combo1.value')
Si es numerico devolvera 'N' si es Caracter 'C'
Si la variable u objeto no existe devolverá 'U'

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas