Problemas con el SET FILTER

Hola Maestro, es una suerte que te encuentre activo ya que necesito de tu ayuda...
Resulta que quiero filtrar los datos de una tabla ("descuentos") que tiene un campo fecha ("fech_venc") a un Grid y para eso he puesto un TextBox en donde ingreso la fecha y un botón ("filtrar") con el siguiente código:
Se le descuentos
set filter to
set filter to MONTH(fech_venc) = val(thisform.text1.value)
Thisform.refresh()
El problema está en que no me filtra bien los datos bien, porque cuando pongo 15/04/2003 me selecciona todos los registros con mes 04 pero de cualquier año 2003,2004,2005... ¿Me podrías decir que falla tiene el Código? Ya que necesito que cuando escribo 15/04/2003, me filtre los registros que tengan solo esa fecha...
Desde ya muchas gracias por todo.
Alejandro Merlo
[email protected]

1 Respuesta

Respuesta
1
Alejandro:
Estas usando mal la función VAL, ya que esta es para transformar en numérico un valor carácter compuesto por números o te devuelve cero si el valor carácter contiene letras o símbolos.
Ej:
VAL("654") te da 654
VAL("ABC123") te da 0
VAL("ABC") te da 0
VAL("654.32") te da 654.32
Lo que deberías hacer es:
En la propiedad "Format" de TEXT1 debes poner la letra "d" (de formato date, sin las comillas).
En la propiedad "InputMask" debes poner 99/99/9999
De esta forma, obligas a que en TEXT1 ingrese solamente una fecha valida.
Luego en el filtro escribes:
_MES=MONTH(THISFORM.TEXT1.VALUE)
SELECT DESCUENTOS
SET FILTER TO MONTH(FECH_VENC)=_MES
GO TOP
THISFORM.REFRESH
Recuerda que en evento "init" del formulario debes escribir:
THISFORM.TEXT1.VALUE=DATE()
ó
THISFORM.TEXT1.VALUE=CTOD(' / / ')
Un saludo
Fernando Alvarez
La Pampa - Argentina
Profe... Hago todo al pie de la letra y cuando ingreso en el textbox 15/09/2003 me lista los agentes del 15/09/2003 y 15/09/2004 y cuando ingreso 15/09/2004, me lista 15/09/2004 y 15/09/2005...??? O sea un año de más... Tenés idea de porqué me ocurre esto?
Gracias por tu respuesta Profe... :)
Alejandro:
Fíjate si tienes bien los indices de la tabla:
En la linea de comandos escribí:
Use descuentos
SET ORDER TO 1 && o el indice por el cual estas trabajando.
Brow normal
Y fíjate si esta bien indexado.
Corre el programa y fíjate en los datos que tienes en el grid y recorré todo el grid, puede haber más registros arriba o abajo.
Una pregunta, tu intención es filtrar por una fecha especifica o por un mes especifico. Si el filtro es por una fecha especifica debes escribir:
SELECT DESCUENTOS
SET FILTER TO THISFORM.TEXT1.VALUE
Go top
THISFORM. REFRESH
¿Estas seguro que el campo fecha de la tabla DESCUENTOS es de formato "Fecha"?
Si seguís teniendo problemas, mandame el formulario (los 2 archivos .SCX y .SCT) y la tabla de DESCUENTOS a: [email protected]
Alejandro:
¿Recibiste mi respuesta?
Te agradecería que la puntúes para así poder liberar espacio en mi página de todoexpertos.com (sino no me entran otras preguntas)
Recibí tu respuesta y me olvidé de puntualizarla. Según lo veo yo, sos el mejor Experto de la red que tenemos el lujo de consultar. Gracias por todo Fernando.
Alejandro Merlo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas