FranciscoA wrote:Lo que realizo es crear una Dbf de paso que se llena desde dbf original, dependiendo de un tramo de fecha,( desde hasta), normalmente un mes completo, no trabajo en Xbrowse con la dbf que es actualizada constantemente desde otras pc, por lo que como dije, rescato la informaci贸n requerida a la llevo a dbf de paso.
El Xbrowse es lento cuando son muchos datos, podr铆a ser 2.000 registros.
Hola Antonio.
Me parece que Dos Mil registros no son suficientes para que la navegaci贸n en XBrowse se vuelva lenta usando tablas temporales en la unidad C: del equipo.
Ser铆a interesante ver como construyes y cargas el browse, en esta parte de tu programa.
Aqui te dejo un ejemplo para DBF y ARRAY, y no veo lentitud en la navegaci贸n.
#include "fivewin.ch"
Function Main() 聽 聽//VelocidXbrw()
local n, aData
聽 聽DbUseArea(.t.,,".\Customer","Cust",.t.)
聽 聽Copy to ".\XBrwReg.dbf"
聽 聽
聽 聽DbUseArea(.t.,,".\XBrwReg","Reg",.t.)
聽 聽for n := 1 to 9
聽 聽 聽 append from ".\Customer"
聽 聽next
聽 聽SysRefresh()
聽 聽XBROWSER "Reg" TITLE "Probando velocidad XBrowse con DBF" ;
聽 聽 聽 聽SHOW SLNUM
聽 聽aData := Reg->( FW_DbfToArray() )
聽 聽XBROWSER aData TITLE "Probando velocidad XBrowse con ARRAY" ;
聽 聽 聽 聽SHOW SLNUM
聽 聽DbCloseAll()
聽 聽Ferase(".\XBrwReg.dbf")
聽
return nil
Saludos
Hola Francisco, amigo como estas?
Muchas gracias como siempre por tu ayuda y tiempo dedicado.
No respond铆 antes, ya que quer铆a probar tu c贸digo.
Muchos Saludos y muchas gracias.
Antonio
En estas 2 lineas, con 1.000 registros Dbf y Array, MUY RAPIDOS ambos.
聽 聽 XBROWSER "&Nro_usu3" TITLE "Probando velocidad XBrowse con DBF" ;
聽 聽 聽 聽SHOW SLNUM
聽 聽 aData:= {}
聽 聽 聽 聽 aData := &Nro_usu3->( FW_DbfToArray() )
聽 聽 聽 聽 XBROWSER aData TITLE "Probando velocidad XBrowse con ARRAY" ;
聽 聽 聽 聽 SHOW SLNUM
La Misma Dbf 1.000 registros, Xbrowse, " LENTISIMO EL DESPLAZAMIENTO ".
聽 聽 聽Sele b
聽 聽 聽go top
聽 聽DEFINE FONT oFont 聽NAME "TAHOMA" SIZE 0,-14 聽BOLD
聽 聽 聽DEFINE FONT oFont1 NAME 'TAHOMA' SIZE 0,16 聽 BOLD
聽 聽 聽DEFINE FONT oFont7 NAME "TAHOMA" SIZE 0,-12 聽BOLD
聽 聽DEFINE DIALOG oDlg SIZE 500,550 PIXEL 聽FONT oFont 聽STYLE nOr( WS_POPUP, WS_VISIBLE, WS_DLGFRAME )
聽 聽 聽@ 00,10 SAY otitu PROMPT Titu 聽SIZE 450,15 PIXEL OF oDlg COLORS RGB(12, 135, 27) 聽 FONT oFont1
聽 聽@ 30,10 XBROWSE oBrw SIZE -10,-40 PIXEL OF oDlg DATASOURCE "&Nro_usu3" ;
聽 聽 聽聽 聽聽 聽 HEADERS 'Tipo Exa', 'Fecha', 'Cantidad','Total...';
聽 聽 聽 COLUMNS "Tip_Ate","Fec_Emi","Can_Exa","Tot_Exa";
聽 聽 聽 聽 聽 聽 PICTURES '@!','@d','9,999,999','9,999,999,999';
聽 聽 聽 CELL LINES AUTOSORT NOBORDER;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // oBrw:nFreeze 聽 聽 聽 := 3
聽 聽聽聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW
聽 聽聽聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:nColDividerStyle := LINESTYLE_INSET
聽 聽聽聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:nRowDividerStyle := LINESTYLE_INSET
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:bClrHeader := {|| { nRGB(140, 0, 0), nRGB( 231, 242, 255 ), } }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:nOpacity 聽 聽:= 230
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:aCols[01]:bFooter 聽 := { || Ltrim( Str( oBrw:KeyNo() ) ) + " / " + LTrim( Str( oBrw:KeyCount() ) ) }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:aCols[ 4]:nDataStrAlign := AL_RIGHT
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:bClrStd 聽 聽 聽 聽 聽 聽 := {|| { nRGB( 聽0, 聽0, 聽0), nRGB(255,248,220) } }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:bClrSelFocus 聽 聽 聽 聽:= {|| { nRGB( 聽255, 聽255, 聽255), nRGB(102, 178, 255) } }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:aCols[3]:cEditPicture 聽 聽:= "9,999,999"
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:aCols[3]:nFooterType 聽 聽:= AGGR_TOTAL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:aCols[4]:cEditPicture 聽 聽:= "9,999,999,999"
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:aCols[4]:nFooterType 聽 聽:= AGGR_TOTAL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:MakeTotals()
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:bChange := {|| oBrw:Maketotals() }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽WITH OBJECT oBrw
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :lFooter := .t.
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽聽 聽oBrw:lHScroll := .f.
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oBrw:lIncrFilter 聽 聽 聽:= .f.
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oBrw:lSeekWild 聽 聽 聽 聽:= .F. 聽 聽 聽 聽 聽 聽 聽 聽 聽 && 聽.T. Busca Contenido, .F. Que comience con lo que digita
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oBrw:SetStyle( 2018)
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oBrw:nColorPen := CLR_RED
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽聽 聽oBrw:nStretchCol 聽:= STRETCHCOL_WIDEST
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oBrw:CreateFromCode()
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽END
聽 聽 聽@ 243,040 BTNBMP SIZE 30,30 PROMPT "IMPRIME" 聽OF oDlg PIXEL 2007 Resource "#8002" 聽FONT oFont7 ;
聽 聽 聽聽 聽聽 聽 ToolTip 聽"Imprime Informe"
聽 聽 聽 聽 聽 聽 聽 //ACTION (Rep_TarSeg(Titu),oDlg:Refresh())
聽 聽 聽@ 243,120 BTNBMP SIZE 30,30 PROMPT "RESUMEN" 聽OF oDlg PIXEL 2007 Resource "#8002" 聽FONT oFont7 ;
聽 聽 聽聽 聽聽 聽 ToolTip 聽"Imprime Informe"
聽 聽@ 243,190 BTNBMP SIZE 30, 30 PROMPT "VOLVER" 聽OF oDlg PIXEL 2007 Resource "#8028" 聽FONT oFont7 ;
聽 聽 聽聽 聽聽 聽 ToolTip 聽"VOLVER";
聽 聽 聽聽 聽 聽ACTION oDlg:End()
聽 聽ACTIVATE DIALOG oDlg CENTERED 聽 聽 ON INIT ( oBrw:SetFocus() )