Consulta Array o Dbf en Xbrowse
Consulta Array o Dbf en Xbrowse
Amigos, buen dia.
Tengo una duda técnica.
Estoy teniendo problemas de lentitud en el uso de Xbrowse con windows 10.
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.
Mi consulta es sera mas aconsejable usar un Array para manejar esta cantidad de registro, o tendrá el mismo problema Xbrowse?, lo pregunto antes de realizar modificación al código.
Uso FWH 17.09 Harbour.
Desde ya muchas gracias.
Muchos Saludos.
Antonio.
Tengo una duda técnica.
Estoy teniendo problemas de lentitud en el uso de Xbrowse con windows 10.
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.
Mi consulta es sera mas aconsejable usar un Array para manejar esta cantidad de registro, o tendrá el mismo problema Xbrowse?, lo pregunto antes de realizar modificación al código.
Uso FWH 17.09 Harbour.
Desde ya muchas gracias.
Muchos Saludos.
Antonio.
FWH 22.10 - HARBOUR - PELLES C
- cmsoft
- Posts: 1297
- Joined: Wed Nov 16, 2005 9:14 pm
- Location: Mercedes - Bs As. Argentina
- Been thanked: 2 times
Re: Consulta Array o Dbf en Xbrowse
Antonio, ya que es un DBF temporal que llenas solo para la pantalla en cuestion, probaste generarlo en el disco local de la estacion de trabajo, y abrirlo como exclusivo?
De esa manera no creo que muestre lentitud...
De esa manera no creo que muestre lentitud...
- leandro
- Posts: 1770
- Joined: Wed Oct 26, 2005 2:49 pm
- Location: Colombia
- Has thanked: 49 times
- Been thanked: 12 times
- Contact:
Re: Consulta Array o Dbf en Xbrowse
Amigo intenta pasando la dbf a un array, así puedes probar la velocidad
http://forums.fivetechsupport.com/viewtopic.php?f=6&t=40474&p=241753&hilit=dbftoarray&sid=791a81e3c748799bf6911264b64c5943&sid=791a81e3c748799bf6911264b64c5943#p241753
Code: Select all | Expand
FW_DbfToArray()
http://forums.fivetechsupport.com/viewtopic.php?f=6&t=40474&p=241753&hilit=dbftoarray&sid=791a81e3c748799bf6911264b64c5943&sid=791a81e3c748799bf6911264b64c5943#p241753
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com
[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 24.09 ] [ xHarbour 64 bits) ]
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com
[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 24.09 ] [ xHarbour 64 bits) ]
Re: Consulta Array o Dbf en Xbrowse
cmsoft wrote:Antonio, ya que es un DBF temporal que llenas solo para la pantalla en cuestion, probaste generarlo en el disco local de la estacion de trabajo, y abrirlo como exclusivo?
De esa manera no creo que muestre lentitud...
Hola Cesar.
Como estas?
Muchas gracias como siempre por tu ayuda.
Efectivamente es lo que hago, por lo que veo la carga y manejo de desplazamiento de tantos registros desde una dbf a Xbrowse es lo que produce la lentitud, pensé que era solo windows 10, pero desde xp al 10 32 y 64 bits, es lo mismo.
Muchas gracias.
Antonio
FWH 22.10 - HARBOUR - PELLES C
Re: Consulta Array o Dbf en Xbrowse
leandro wrote:Amigo intenta pasando la dbf a un array, así puedes probar la velocidadCode: Select all | Expand
FW_DbfToArray()
http://forums.fivetechsupport.com/viewtopic.php?f=6&t=40474&p=241753&hilit=dbftoarray&sid=791a81e3c748799bf6911264b64c5943&sid=791a81e3c748799bf6911264b64c5943#p241753
Hola Leandro.
Muchas gracias por tu ayuda y siempre estar atento.
De ahí mi pregunta que va por ver si con array, puedo darle mayor velocidad al movimiento sobre los registro y eso que solo es para mostrar un informe y no realizar ninguna operación sobre los registros.
He usado array, para menor cantidad de registros, por ser un trabajo en memoria, pienso que podría causar otros problemas con colapso de memoria, quizás especulo, pero prefiero ver la opinión de colegas que si han experimentado con ello.
Quedo atento a sus comentarios.
Muchas gracias y muchos saludos.
Antonio.
FWH 22.10 - HARBOUR - PELLES C
Re: Consulta Array o Dbf en Xbrowse
Haz intentado indexarlo con la clausula TEMPORARY antes de mostrarlo en el xbrowse?
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Consulta Array o Dbf en Xbrowse
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.
Code: Select all | Expand
#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
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
-
- Posts: 768
- Joined: Sun Jun 15, 2008 7:47 pm
- Location: Sevilla
- Been thanked: 5 times
- Contact:
Re: Consulta Array o Dbf en Xbrowse
Creo que el problema es el numero de columnas y el proceso que haces en ellas.
Tal vez deberías cargar en el xBrowse lo estrictamente necesario, a poder ser datos de tipo cadena.
Aunque tu no lo veas si tienes muchas columnas el browse las trata todas aunque no se vean.
Para los browses es más costoso el numero de columnas que de registros.
Por ejemplo todos los datos repetitivos ponlos fuera del xBrowse...
Tal vez deberías cargar en el xBrowse lo estrictamente necesario, a poder ser datos de tipo cadena.
Aunque tu no lo veas si tienes muchas columnas el browse las trata todas aunque no se vean.
Para los browses es más costoso el numero de columnas que de registros.
Por ejemplo todos los datos repetitivos ponlos fuera del xBrowse...
______________________________________________________________________________
Sevilla - Andalucía
Sevilla - Andalucía
Re: Consulta Array o Dbf en Xbrowse
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.Code: Select all | Expand
#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.
Code: Select all | Expand
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 ".
Code: Select all | Expand
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() )
FWH 22.10 - HARBOUR - PELLES C
Re: Consulta Array o Dbf en Xbrowse
Qué significa esta expresión?
Puedes probarlo simplemente asi?
Code: Select all | Expand
.... DATASOURCE "&Nro_usu3" ...
Puedes probarlo simplemente asi?
Code: Select all | Expand
... DATASOURCE Alias() ...
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Consulta Array o Dbf en Xbrowse
remtec Wrote:
De ahí mi pregunta que va por ver si con array, puedo darle mayor velocidad al movimiento sobre los registro y eso que solo es para mostrar un informe y no realizar ninguna operación sobre los registros.
No veo el por qué de esto, a menos que falte codigo por exponer.
Por cada movimiento ( arriba-abajo ) se está llamando a MakeTotals():
Code: Select all | Expand
oBrw:bChange := {|| oBrw:Maketotals() }
Intenta quitándolo.
Saludos,
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Re: Consulta Array o Dbf en Xbrowse
cnavarro wrote:Qué significa esta expresión?Code: Select all | Expand
.... DATASOURCE "&Nro_usu3" ...
Puedes probarlo simplemente asi?Code: Select all | Expand
... DATASOURCE Alias() ...
Hola Cristobal.
Muchas gracias por responder.
El uso de esta macro "&Nro_usu3", es por creo una archivo de paso con un numero que tienen asignado los usuario cuando se crean, así puedo usar un archivo personalizado por cada usuario y se genera Ejemplo: "INFO"+Nro_Usu y me va a dar un INFO12.
Esta macro le he usado desde clipper y nunca he tenido problemas.
Respondiendo a tu sugerencia, ya había probado con el nombre real de ese archivo y no mejora, además la prueba que realice con el código de Francisco, pueden ver que ambos Xbrowse tienen la macro, con el código de Francisco vuela y con el código de Xbrowse que defino, es lentísimo el barrido de las filas.
La Dbf que uso, solo tiene 4 columnas.
Saludos.
Antonio
FWH 22.10 - HARBOUR - PELLES C
Re: Consulta Array o Dbf en Xbrowse
FranciscoA wrote:remtec Wrote:
De ahí mi pregunta que va por ver si con array, puedo darle mayor velocidad al movimiento sobre los registro y eso que solo es para mostrar un informe y no realizar ninguna operación sobre los registros.
No veo el por qué de esto, a menos que falte codigo por exponer.
Por cada movimiento ( arriba-abajo ) se está llamando a MakeTotals():Code: Select all | Expand
oBrw:bChange := {|| oBrw:Maketotals() }
Intenta quitándolo.
Saludos,
Hola Francisco.
En respuesta a tu observación, ya había quitado todo este código solo deje una línea y nada, incluso en el mismo programa pongo las líneas de Xbrowse que sugieres para dbf y array y vuelan, saliendo de esto entro al xbrowse en cuestión y todo se enlentece.
Muchas gracias y muchos saludos.
Antonio
Así probé el código:
Code: Select all | Expand
@ 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:CreateFromCode()
@ 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()
FWH 22.10 - HARBOUR - PELLES C
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Consulta Array o Dbf en Xbrowse
Antonio.
Aquí funciona bien tu código, con 5010 registros.
Saludos.
Aquí funciona bien tu código, con 5010 registros.
Code: Select all | Expand
FUNCTION REMTEC()
local oDlg, oBrw
DbUseArea(.t.,,".\Customer","Cust",.t.)
Copy to ".\XBrwReg.dbf"
DbUseArea(.t.,,".\XBrwReg","Reg",.t.)
for n := 1 to 9
append from ".\Customer"
next
SysRefresh()
DEFINE DIALOG oDlg SIZE 500,550 PIXEL STYLE nOr( WS_POPUP, WS_VISIBLE, WS_DLGFRAME )
@ 30,10 XBROWSE oBrw SIZE -10,-40 PIXEL OF oDlg DATASOURCE "Reg" ;
COLUMNS "FIRST","LAST","HIREDATE","SALARY" ;
HEADERS "Nombre","Apellido","Nacimiento","Salario" ;
PICTURES '@!','@!','@d','999,999,999,99';
CELL LINES AUTOSORT NOBORDER
oBrw:CreateFromCode()
ACTIVATE DIALOG oDlg CENTERED
DbCloseAll()
Ferase(".\XBrwReg.dbf")
return nil
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Re: Consulta Array o Dbf en Xbrowse
Hola Francisco
Muchas gracias por tu ayuda y preocupación como siempre.
Ahora menos entiendo.
Si dentro del mismo programa, las líneas xbrowse dbf y array, funcionan muy rápido, luego se abre mi código de xbrowse y con la misma dbf y registros, funciona muy lento, tu lo pruebas y funciona bien, no tengo explicación, si solo en mi caso con 1.000, tiene este comportamiento, que puede ser?, ni siquiera me puedo imaginar.
Cuando me refiero a lento, es su barrido de las filas, porque son 4 campos, si me desplazo con las flechas, ese desplazamiento es el lento.
Y eso que tuve que llevarlo a disco local, no se si es lo normal, que aun cuando se trabaja en red, un archivo de paso, tenga que llevarlo a un disco local, pero en mis caso, pude descartar la red.
Muchos Saludos amigo.
Antonio.
Muchas gracias por tu ayuda y preocupación como siempre.
Ahora menos entiendo.
Si dentro del mismo programa, las líneas xbrowse dbf y array, funcionan muy rápido, luego se abre mi código de xbrowse y con la misma dbf y registros, funciona muy lento, tu lo pruebas y funciona bien, no tengo explicación, si solo en mi caso con 1.000, tiene este comportamiento, que puede ser?, ni siquiera me puedo imaginar.
Cuando me refiero a lento, es su barrido de las filas, porque son 4 campos, si me desplazo con las flechas, ese desplazamiento es el lento.
Y eso que tuve que llevarlo a disco local, no se si es lo normal, que aun cuando se trabaja en red, un archivo de paso, tenga que llevarlo a un disco local, pero en mis caso, pude descartar la red.
Muchos Saludos amigo.
Antonio.
FWH 22.10 - HARBOUR - PELLES C