Page 1 of 1

AYUDA CON FILTROS

PostPosted: Wed Apr 06, 2011 1:06 pm
by alvduqant
Muy buenas, estoy intentando hacer una cosa y no se si es viable. A ver, yo tengo una base de datos DBF y me gustaría hacer un scopes por fechas y una vez hecho ese escope me gustaría que me ordenase los datos que me ha filtrado por otro campo de la BBDD, por ejemplo, quiero que me saque los registros desde la fecha "X" a la fecha "Y" y que dentro de ese rango me lo ordene por otro campo que tengo en la BBDD que se llama año, en orden ascendente.

¿Esto se puede hacer?, si es así, ¿me podrían echar una mano?.

Gracias de antemano.

Re: AYUDA CON FILTROS

PostPosted: Thu Apr 07, 2011 6:52 am
by Carles
A,

Crea un tag por fecha y años y listos.

Re: AYUDA CON FILTROS

PostPosted: Thu Apr 07, 2011 9:14 am
by alvduqant
El problema es que un campo es tipo fecha y el otro es tipo carácter, si lo paso todo a fecha no me filtra y si lo paso todo a carácter tampoco. ¿Alguna solución?. Gracias

Re: AYUDA CON FILTROS

PostPosted: Thu Apr 07, 2011 10:51 am
by Carles
A,

Prueba indexar con dtos( campofecha ) + campocaracter

Re: AYUDA CON FILTROS

PostPosted: Thu Apr 07, 2011 11:18 am
by alvduqant
Que va, no funciona. Desde luego, como algo tan sencillo se puede complicar tanto. Es filtrar por un campo y ordenar por otro.

Muchas gracias, si se te ocurre algo más te lo agradecería, pero estoy estancado. Estoy probando coger el alias que se me crea, ya filtrado por fechas, copiarlos a una tabla y en esa nueva tabla hacer la ordenación, pero no se hacerlo muy bien, por lo que estoy estancado.

Muchas gracias, de nuevo.

Re: AYUDA CON FILTROS

PostPosted: Fri Apr 08, 2011 4:51 pm
by carlos vargas
Code: Select all  Expand view

...
INDEX ON dtos( fld_date ) + fld_char TAG datechar
...
dFechaIni := date()
dFechaFin := date() - 90
...
ALIAS->( ordsetfocus( "DATECHAR" ) )
ALIAS->( SetScope( dtos( dFechaIni), dtos( dFechaFin )  ) )
...
Browse()
...
ALIAS->( ClearScope() )
...
 


Code: Select all  Expand view

/*-------------------------------------------------------------------------------------------------*/
/*procedimientos para filtros rapidos en tablas*/
PROCEDURE ClearScope()

   /*elimina scope definidos*/
   OrdScope( TOPSCOPE    , NIL )
   OrdScope( BOTTOMSCOPE , NIL )

   /*salta al primer registro*/
   DBGoTop()

RETURN

/*-------------------------------------------------------------------------------------------------*/
/*procedimientos para filtros rapidos en tablas*/
PROCEDURE SetScope(xValorIni,xValorFin)
   DEFAULT xValorFin := xValorIni

   /*establece el scope*/
   OrdScope( TOPSCOPE,    xValorIni )
   OrdScope( BOTTOMSCOPE, xValorFin )

   /*salta al primer registro, activando el scope*/
   DBGoTop()

RETURN

/*-------------------------------------------------------------------------------------------------*/