Si estas usando FWH y El servidor local de ADS, le funcion DBSETFILTER es IMPRESIONANTEMENTE RAPIDA. Te puedo decir que es 1000 o 1500 veces mas rapida que el SET FILTER convencional, solo que hay que saber utilizarla.
Por ejemplo, el uso clasico en Clipper/Harbour seria asi:
- Code: Select all Expand view
nEdad := 25
SET FILTER TO EDAD > nEdad
GO TOP
En ADS esto no se puede hacer porque ADS no reconoce el valor de "nEdad" por estar fuera del ambito de trabajo del servidor, lo que hacemos entonces, es convertir la expresion de filtro en una expresion "textual" de esta manera:
- Code: Select all Expand view
nEdad := 25
cFiltro := "EDAD >="+ALLTRIM(STR(nEdad))
bFitro := "{||"+cFiltro+"}")
DBSETFILTER(&bFiltro,cFiltro)
DBGOTOP()
El resultado es alucinantemente rapido. ADS internamente convierte las expresiones de filtro en queries SQL y la velocidad del filtraje es tremendamente rapida.