FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Filtrando datos
Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM
Filtrando datos
Posted: Sat Dec 03, 2011 09:20 AM
Compañeros,

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

Code (fw): Select all Collapse
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 (fw): Select all Collapse
cfiltr="fecha>='"+dtoc(dDesde)+"' .and. fecha<='"+dtoc(dHasta)+"'"
bfiltr="{||"+cfiltr+"}"
dbsetfilter(&bfiltr,cfiltr)


o incluso utilizando ADS mediante
Code (fw): Select all Collapse
clientes->(AdsSetAOF( cfiltr ))


... pero nada ninguna de las 2 opciones funciona correctamente, supongo que es porque los campos 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.
Posts: 30
Joined: Thu Oct 25, 2007 07:54 PM
Re: Filtrando datos
Posted: Sat Dec 03, 2011 10:35 AM

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.

Posts: 845
Joined: Sun Oct 09, 2005 05:36 PM
Re: Filtrando datos
Posted: Sat Dec 03, 2011 07:52 PM

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

____________________

Paco

Continue the discussion