Estoy realizando pruebas y no logro dar con la rapidez que necesito. Cuando aplico SCOPE la base de datos se limita muy rápido y si luego aplico un SET FILTER en algunas me lo hace rápido y en otras funciona muy lento. Alguien sabe si cuando hago un SET FILTER encima de un SCOPE, lo hace sobre la Base de Datos limitada por el SCOPE o sobre toda la Base de Datos como si no estuviese limitada. El resultado siempre es correcto y lo realizo sobre bases de datos DBF (NTX).
A modo de ejemplo limito con SCOPE a los registros entre dos fechas y luego le pido con SET FILTER que me muestre solo los datos de un usuario. Este ultimo SET FILTER lo hace sobre los datos que se muestran en pantalla (limitados entre fechas) o vuelve a tratar toda la base de datos? En las pruebas va bien pero en ocasiones tarda mucho y en otras va muy rápido. El SCOPE lo aplico cuando cargo la base de datos, por ejemplo dependiendo de un registro de partida de otra base de datos y el filtro lo aplico desde un botón que me coge los datos que escribo con un get y hace el SET FILTER de todos _ que están filtrados (almenos eso creo). Es cierto o estoy equivocado?
SCOPE + SET FILTER
- Andrés González
- Posts: 625
- Joined: Thu Jan 19, 2006 10:45 am
- Location: Mallorca
SCOPE + SET FILTER
Saludos
Andrés González desde Mallorca
Andrés González desde Mallorca
Re: SCOPE + SET FILTER
Primero se procesa el scope sobre el orden activo y luego se evalúa el filtro que se hará sobre cualquier expresión válida. Dependiendo de la complegidad de esa expresión se determinará la velocidad.
Si pudieras pober un ejemplo sería más fácil ayudarte
Tu vecino...
Manu Expósito
Si pudieras pober un ejemplo sería más fácil ayudarte
Tu vecino...
Manu Expósito
______________________________________________________________________________
Sevilla - Andalucía
Sevilla - Andalucía
Re: SCOPE + SET FILTER
Andrés, el mejor és usar INDICE TEMPORAL Super rápido para filtros.
Saludos.
Code: Select all
INDEX ON CAMPO TAG CAMPO TO TMP MEMORY // ADDITIVE
OrdSetFocus( 1 )
GO TOP
João Santos - São Paulo - Brasil
- Andrés González
- Posts: 625
- Joined: Thu Jan 19, 2006 10:45 am
- Location: Mallorca
Re: SCOPE + SET FILTER
Gracias Manu, no puedo poner un ejemplo ya que es difícil de entender ya que todo este proceso lo hago con ficheros externos al programa, del tipo:
El SCOPE me coge el primer y el ultimo registro que quiero ;date()-365;date() si lo pongo en el indice. En los indices que no tienen el cuarto o quito valor no realiza el SCOPE. En este caso limito los valores al ultimo año, o sea, 365 días menos. Luego aplico el filtro y va rapido pero algunas veces se queda pensando "????". Por eso era la pregunta, pero si se aplica sobre 9000 registros mas o menos que es filtrado del SCOPE eso no deberia pasar por muy compleja que sea el FILTER.
Karinha, es una muy buena idea eso de utilizar indices temporales ya que lo que si hace bien HARBOUR es abrir y cerrar ficheros rápido. Me pongo con ello a ver si mejoro. Gracias
Code: Select all
[BASE]
10;50
entrada.dbf
n:
"ENTRADAS"
21;0;23;60
3;0;20;60
[INDEX]
ENFECEN;FECHA;efecen;date()-365;date();
ENTRADA;AÑO.NUM.;STR(EANOEN,4) + STR(ENUMEN,7)
ENREFEX;REF. EXT.;erefex
ENCODEX;COD.EXTER.;ecodex
ENRFOR;REF.ORD.;STR(ENRFOA,2) + STR(ENRFOR,4)
ENSOLIC;ENSOLIC;ESOLIC
[RELA]
ore;orecod;ecodex;.\dat\
asu;asufcd;ecodex + ecodas;.\dat\
Karinha, es una muy buena idea eso de utilizar indices temporales ya que lo que si hace bien HARBOUR es abrir y cerrar ficheros rápido. Me pongo con ello a ver si mejoro. Gracias
Saludos
Andrés González desde Mallorca
Andrés González desde Mallorca
-
- Posts: 128
- Joined: Tue Jul 15, 2008 7:12 pm
- Location: Argentina
Re: SCOPE + SET FILTER
y por que no crear un indice de fechas + usuario ?
y luego crear el scope entre fechas y usuario
y luego crear el scope entre fechas y usuario