Page 1 of 1

Filtrando datos

Posted: Sat Dec 03, 2011 9:20 am
by Loren
Compañeros,

Tengo DBF-NTX y a la hora de optimizar el filtro:

Code: Select all

set filter to clientes->fecha>=dDesde .and. clientes->fecha<=dHasta
Así funciona perfectamente pero en Red Local tarda 10seg. aprox.

Para optimizar el filtro pretendo hacer lo siguiente... pero no filtra correctamente:

Code: Select all

cfiltr="fecha>='"+dtoc(dDesde)+"' .and. fecha<='"+dtoc(dHasta)+"'"
bfiltr="{||"+cfiltr+"}"
dbsetfilter(&bfiltr,cfiltr)
 
o incluso utilizando ADS mediante

Code: Select all

clientes->(AdsSetAOF( cfiltr ))
... pero nada ninguna de las 2 opciones funciona correctamente, supongo que es porque _ fecha son DATE y al armar la cadena se pasa a CARACTER.

Además de migrar a CDX y utilizar SCOPES.... ¿mediante NTX existe otra solución?

Mil gracias.
LORENZO.

Re: Filtrando datos

Posted: Sat Dec 03, 2011 10:35 am
by JARO
Buenas, siendo fecha un campo DATE deberías componer la cadena del filtro de la siguiente forma:
cfiltr="fecha>=ctod('"+dtoc(dDesde)+"') .and. fecha<=ctod('"+dtoc(dHasta)+"')"
Se estaba aplicando el filtro sobre una cadena no sobre un DATE
Espero que te sirva.

Re: Filtrando datos

Posted: Sat Dec 03, 2011 7:52 pm
by Francisco Horta
lorenzo
que taal lo mejor es que te cambies a cdx, no requiere de mucho, y es mas fiable y rapido,,
te recomendaria que armaras tus indices con DTOS(), es mas practico y facil
cfiltro := "fecha>='"+dtos(dDesde)+"' .and. fecha<='"+dtos(dHasta)+"'"
bfiltro := "{||"+cfiltro+"}"
dbsetfilter(&bfiltro,cfiltro)
saludos
paco