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 | Expand
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())
Opcion 2: se abre el DBF cada vez que se ejecuta el filtro y el browse(), va perfecto
Code: Select all | Expand
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
Gracias de antemano por vuestra ayuda.