Hola Marcelo,
Adjunto una prueba (código resumido) del query y el xBrowse.
Te comento que al query lo ejecuta en forma instantánea (tal como si fuese al Architect), esto lo detecto por el msgsound() que sale después de la consulta.
Luego de ello, se abre un xBrowse vacío cuya imagen parpadea unas cuantas veces y tarda un par de minutos en mostrarse el contenido. Cuando el contenido es mostrado, el desplazamiento entre celdas es muy lento.
Es de destacar que los registros que cumplen con la condición del query son alrededor de 30000, pero ese mismo query hecho en el architect, es mostrado al instante en su browse propio y el desplazamiento entre celdas es instantáneo. También destaco que si cambio el query y, la cantidad de registros encontrados baja a 5000, el xBrowse "se arma" más rápido y el desplazamiento entre celdas es también más rápido.
Esto lo uso en red local.
Code: Select all
#INCLUDE "FIVEWIN.Ch"
#include "xbrowse.ch"
#include "ADS.CH"
REQUEST HB_LANG_ES
REQUEST DBFCDX, DBFFPT
REQUEST ADS,ADSKeyCount,ADSKeyNo,OrdKeyCount,OrdKeyNo, AdsGetRelKeyPos, AdsSetRelKeyPos,DBFCDX
Function PruebaADS()
local cCarpetaInstalacion:="\\Pcdellocal\D\RJCtaller" , cFechaDesde:="01/01/1976" , cFechaHasta:="01/07/2012"
local cServer := cCarpetaInstalacion+"\DBF's\"
local lConect:=.f.
cConsulta1:="Select TALON, NOMBRE, DIRECCION, LOCALIDAD, BARRIO, CODPOSTAL, TELEFONO1, TELEFONO2, "+;
"CELULAR, EMAIL, ARTEFACTO, MARCA, MODELO, SERIE, UBICADO, FECHAIN, "+ ;
"FECHALIQUI, FINALIZADO, RETIRO, FECHA_COM, DETALLECL, DETALLETA, "+;
"ESTADO, DEALER, GARANTIZA, STATUS from TRABAJOS where "+;
"(FECHAIN>='"+cFechaDesde+"' and FECHAIN<='"+cFechaHasta+"'"+;
" or "+;
"FECHALIQUI>='"+cFechaDesde+"' and FECHALIQUI<='"+cFechaHasta+"'"+;
" or "+;
"RETIRO>='"+cFechaDesde+"' and RETIRO<='"+cFechaHasta+"')"
ADSSETDATEFORMAT("DD/MM/YYYY") // agregado por sugerencia foro fwh
RddRegister("ADS",1)
RddSetDefault("ADS")
AdsSetServerType ( 2 )
SET FILETYPE TO CDX
DbSelectArea( 0 ) // agregado por MArio
AdsConnect( cServer , 2 )
IF ! ADSCreateSQLStatement("SQLarea",2) // 2 == ADS_CDX
MsgAlert( "ADSCreateSQLStatement('SQLarea',2)" )
RETU .F.
ENDIF
if ADSExecuteSQLDirect( cConsulta1 )
msgsound(cCarpetaInstalacion+"\Sonidos\laser.wav") // con esto detecto que el query es respondido al instante
sqlarea->(dbgotop())
// sqlarea->(xBrowse()) // esto funciona igual
xBrowse() // es muy larga la espera para visualizar el xBrowse
endif // de if ADSExecuteSQLDirect( cConsulta1 )
AdsDisconnect()
sqlarea -> ( dbclosearea() )
Return nil
Gracias.
Rolando