FoxPro/Visual FoxPro - Filtro por año

   
Vista:

Filtro por año

Publicado por Osmin (5 intervenciones) el 23/05/2012 15:24:32
Hola

Tengo una tabla con fecha de ingreso

y quiero filtrar todos los alumnos que se matricularon en ese año.

el codigo que uso es el siguiente pero no me funciona.


IF LASTKEY()#27
_nAno = CTOD(Thisform.Text1.Value)
dfecha = cTod(Padl(_nAno,4,'0'))
year(dFecha)

Select nie,nom,ape from alumno WHERE Ing between dfecha AND dfecha INTO CURSOR resultado
Thisform.List1.RowSource = "resultado.nie,nom,ape"
ENDIF

cual será el error por el cual no hace el filtro.
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

Filtro por año

Publicado por Jose Casalino (94 intervenciones) el 23/05/2012 19:47:45
Segun veo tu codigo al poner ctod obtienes una fecha no un año, te recomendo que tengas solo el año en la variable es decir 2012 y en el select pon la funcion year(campo fecha), es una idea.

Jose
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

Filtro por año

Publicado por Mauricio (1368 intervenciones) el 24/05/2012 01:55:44
Puedes filtrar tus datos de esta manera:
*--- manera 1
IF LASTKEY()#27
.......dfecha = CTOD(Thisform.Text1.Value)
.......Select nie,nom,ape from alumno WHERE Ing = YEAR(dfecha) INTO CURSOR resultado
.......Thisform.List1.RowSource = "resultado"
ENDIF
*
*--- Manera 2
IF LASTKEY()#27
.....dfecha = CTOD(Thisform.Text1.Value)
...... SET FILTER TO ing = YEAR(dfecha)
ENDIF
* De esta segunda manera debes tener cuidado cuando pongas SET FILTER TO
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

Filtro por año

Publicado por Osmin (5 intervenciones) el 24/05/2012 23:32:04
Aplico este codigo y me muestra el siguiente error.

Incompatibilidad entre el tipo de operador y tipo de operando.

IF LASTKEY()#27
dfecha = CTOD(Thisform.Text1.Value)

Select nie,nom,ape,ing from alumno WHERE Ing = YEAR(dfecha) INTO CURSOR resultado
Thisform.Grid1.RecordSource = "resultado.nie,nom,ape,ing"
ENDIF

escribo year(dfecha) antes de la sentencia SQL y
no me muestra error pero no me filtra.
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

Filtro por año

Publicado por Mauricio (1368 intervenciones) el 25/05/2012 00:51:07
esto quiere decir que thisform.text1.value ya tiene formato de fecha, entonces cambia esto:
IF LASTKEY()#27
dfecha = Thisform.Text1.Value

Select nie,nom,ape,ing from alumno WHERE Ing = YEAR(dfecha) INTO CURSOR resultado
Thisform.Grid1.RecordSource = "resultado"
ENDIF
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

Filtro por año

Publicado por Osmin (5 intervenciones) el 01/06/2012 23:12:55
Si le quito el CTOD al TEXT1 me muestra error.
Asi que escribo el siguiente codigo.


IF LASTKEY()#27
dfecha = CTOD(Thisform.Text1.Value)

Select nie,nom,ape,ing from alumno WHERE YEAR(Ing) = YEAR(dfecha) INTO CURSOR resultado
Thisform.Grid1.RecordSource = "resultado.nie,nom,ape,ing"
ENDIF

En este codigo no me muesta error pero no filtra los datos.
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