Haciendo pruebas de velocidad de dos PCs en RED, con filtros y Browse(), me sucede lo siguiente.
1) Accedo desde el primer PC, ejecuto un filtro y despues visualizo la informacion con un browse(), perfecto en pocos segundos se muestra.
2) Accedo desde el segundo PC, ejecuto un filtro y despues visualizo la informacion con un browse(), y tambien perfecto en pocos segundos se muestra.
3) Al volver a ejecutar el filtro desde el primer PC, el filtrado tarda algun segundo mas, pero el browse() tarda minutos en aparecer, pero si antes de ejecutar el filtro cierro el archivo DBF y lo vuelvo a abrir, entonces todo funciona mas rapido.
¿Teneis alguna idea de por que sucede?
El codigo es sencillo
Opcion 1: Los DBF solo se abren una vez, funciona lentisimo el paso 3
Code: Select all
dArc:=AbreDbf("ARCHIVO","Archivo")
(dArc)->(OrdSetFocus(1))
DO WHILE .t.
IF !MsgNoYes("Desea volver a ejecutar el filtro")
EXIT
ENDIF
cIni:=TIME()
SET FILTER TO VAL((dArc)->Codigo)>=21000000000 .AND. VAL((dArc)->Codigo)<=21200000000
cFin:=TIME()
MsgInfo("Inicio: "+cIni+CRLF+"Fin filtro: "+cFin)
(dArc)->(DBGOTOP())
IF (dArc)->(EOF())
MsgInfo("Archivo vacio")
EXIT
ENDIF
Browse()
ENDDO
(dArc)->(DBCLOSEAREA())
Code: Select all
DO WHILE .t.
IF !MsgNoYes("Desea volver a ejecutar el filtro")
EXIT
ENDIF
dArc:=AbreDbf("ARCHIVO","Archivo")
(dArc)->(OrdSetFocus(1))
cIni:=TIME()
SET FILTER TO VAL((dArc)->Codigo)>=21000000000 .AND. VAL((dArc)->Codigo)<=21200000000
cFin:=TIME()
MsgInfo("Inicio: "+cIni+CRLF+"Fin filtro: "+cFin)
(dArc)->(DBGOTOP())
IF (dArc)->(EOF())
MsgInfo("Archivo vacio")
EXIT
ENDIF
Browse()
(dArc)->(DBCLOSEAREA())
ENDDO