Ordscope() ¿Tiene alguna limitación?
Moderator: Rathinagiri
Re: Ordscope() ¿Tiene alguna limitación?
Gracias Javier, muy buena solución, anda muy bien y rápido, por lo menos en casa anda muy rápido, pero recién voy a saber que tan rápido anda en mi trabajo (ahi está en la red que tiene Windows Server 2008) dentro de 2 semanas, porque estoy de vacaciones. Te comento dentro de 2 semanas. Gracias de nuevo.
Antonio
Sistemas
Resipol
Sistemas
Resipol
-
- Posts: 1275
- Joined: Tue Sep 03, 2013 4:22 am
- Location: Tecámac, México
Re: Ordscope() ¿Tiene alguna limitación?
Hola Citro,
A mi experiencia, parece que es rapido, ya que se hace solo con pocos registros, no importa que sea en red? Yo he hecho ejejmplos similares y es bastante rapido, pareciera que no estuviera en red.
Saludos y a disfrutar de las vacaciones!
A mi experiencia, parece que es rapido, ya que se hace solo con pocos registros, no importa que sea en red? Yo he hecho ejejmplos similares y es bastante rapido, pareciera que no estuviera en red.
Saludos y a disfrutar de las vacaciones!

Re: Ordscope() ¿Tiene alguna limitación?
Hola. Volví de mis vacaciones y una de las primeras cosas que hice fue probar lo del filtro con ORDSCOPE. El equipo de mi trabajo, es Windows 7 de 64 bits sobre un servidor Windows 2008 server. Al márgen de que algunos controles como los LABELS y el ancho del GRID es como que la letra fuera más grande y queda cortado el texto del LABEL por el TEXTBOX, por ej. o en el caso del GRID es como si no diera el ancho en el caso de la fecha, por ej., y que esto en XP se ve bien, lo más preocupante es el tiempo que tarda en cargar nada más que la tabla principal, no la creada posteriormente, en la grilla: como mínimo tarda 3 minutos. Una vez cargada aplico el filtro y ahi tarda no menos de 15 segundos en aplicar el filtro. Lo que hice fue pasar la tabla al disco local de mi equipo y hacer la misma prueba y ahi anduvo como en casa, o sea que el problema es la red de mi trabajo.
No es la primera vez que me pasa algo parecido, de hecho en la aplicación que tengo en Harbour pasa lo mismo en otros módulos, como por ej. tablas de tesorería o informes de movimientos de stock. Lo peor de todo es que si por ej. le quiero mostrar a un usuario la pantalla en modo gráfico para que vea como quedaría un filtro de las ventas como el que expuse me termine diciendo, “todo muy lindo como se termina viendo, pero si hay que esperar tanto tiempo para verlo prefiero seguir trabajando con lo que hay en modo consola”, y la verdad es que tiene razón. Bueno por las dudas vuelvo a poner el fuente tal como funcionaba antes de volver de mis vacaciones:
#include "hmg.ch"
Function Main
PRIVATE aDB
SET DATE FRENCH
REQUEST DBFCDX , DBFFPT
RDDSETDEFAULT( "DBFCDX" )
CreaTabla()
AgreDatos()
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 1000 ;
HEIGHT 510 ;
TITLE 'Filtro con ORDSCOPE()' ;
ON RELEASE DbCloseAll() ;
MAIN
@ 10,10 GRID Grid_1 ;
WIDTH 450 ;
HEIGHT 200 ;
HEADERS {'Zona','Vendedor','Fecha','Cliente'} ;
WIDTHS {100,100,100,100};
VALUE { 1,1} ;
ROWSOURCE "stve" ;
COLUMNFIELDS { 'zona','vendedor','fecha','cliente' }
@ 10,470 GRID Grid_2 ;
WIDTH 450 ;
HEIGHT 200 ;
HEADERS {'Zona','Vendedor','Fecha','Cliente'} ;
WIDTHS {100,100,100,100};
VALUE { 1,1} ;
ROWSOURCE "MiDB" ;
COLUMNFIELDS { 'zona','vendedor','fecha','cliente' }
DEFINE BUTTON BUTTON1
ROW 260
COL 10
CAPTION 'Filtro'
ACTION FiltraTabla()
WIDTH 150
END BUTTON
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return
/***/
static Function FiltraTabla()
LOCAL nItems
ordsetfocus(1)
DesFec:=ctod( "01/10/2013" )
HasFec:=ctod( "31/10/2013" )
DesVen:="19"
HasVen:="20"
DesZona:="06"
HasZona:="06"
DesCli:="0000"
HasCli:="9999"
ordscope( 0,DesZona +Dtos( DesFec ) + DesVen + DesCli )
ordscope( 1,HasZona +Dtos( HasFec ) + HasVen + HasCli )
go top
DO WHILE !EOF()
MiDB->(dbAppend())
MiDB->Zona := stve->Zona
MiDB->Fecha := stve->Fecha
MiDB->Vendedor:= stve->Vendedor
MiDB->Cliente := stve->Cliente
stve->(DBSKIP())
END DO
Select("MiDB")
ordscope( 0,DesVen )
ordscope( 1,HasVen )
DBSELECTAREA(1)
Form_1.Grid_2.Refresh
Return Nil
/***/
static Function CreaTabla()
local aEstru
aEstru:={ { "zona","C",2,0 },;
{ "cliente","C",4,0 },;
{ "fecha","D",8,0 },;
{ "vendedor","C",2,0 }}
aDB := aEstru
DbCreate( "stve",aEstru )
DbCreate( "MiDB",aDB )
use MiDB new shared
index on vendedor tag MiDB
use stve new shared
*index on Dtos( fecha ) +zona +cliente +vendedor tag STVE
index on zona + DToS(fecha) + vendedor + cliente tag STVEZO
retu Nil
static Function AgreDatos()
stve->( DbAppend() )
stve->zona :="06"
stve->cliente :="0057"
stve->fecha :=ctod( "08/10/2013" )
stve->vendedor:="20"
stve->( DbAppend() )
stve->zona :="02"
stve->cliente :="0855"
stve->fecha :=ctod( "09/10/2013" )
stve->vendedor:="14"
stve->( DbAppend() )
stve->zona :="06"
stve->cliente :="0628"
stve->fecha :=ctod( "10/09/2013" )
stve->vendedor:="19"
stve->( DbAppend() )
stve->zona :="10"
stve->cliente :="0019"
stve->fecha :=ctod( "11/10/2013" )
stve->vendedor:="03"
stve->( DbAppend() )
stve->zona :="06"
stve->cliente :="0020"
stve->fecha :=ctod( "12/10/2013" )
stve->vendedor:="19"
stve->( DbAppend() )
stve->zona :="06"
stve->cliente :="0821"
stve->fecha :=ctod( "02/10/2013" )
stve->vendedor:="07"
retu Nil
No es la primera vez que me pasa algo parecido, de hecho en la aplicación que tengo en Harbour pasa lo mismo en otros módulos, como por ej. tablas de tesorería o informes de movimientos de stock. Lo peor de todo es que si por ej. le quiero mostrar a un usuario la pantalla en modo gráfico para que vea como quedaría un filtro de las ventas como el que expuse me termine diciendo, “todo muy lindo como se termina viendo, pero si hay que esperar tanto tiempo para verlo prefiero seguir trabajando con lo que hay en modo consola”, y la verdad es que tiene razón. Bueno por las dudas vuelvo a poner el fuente tal como funcionaba antes de volver de mis vacaciones:
#include "hmg.ch"
Function Main
PRIVATE aDB
SET DATE FRENCH
REQUEST DBFCDX , DBFFPT
RDDSETDEFAULT( "DBFCDX" )
CreaTabla()
AgreDatos()
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 1000 ;
HEIGHT 510 ;
TITLE 'Filtro con ORDSCOPE()' ;
ON RELEASE DbCloseAll() ;
MAIN
@ 10,10 GRID Grid_1 ;
WIDTH 450 ;
HEIGHT 200 ;
HEADERS {'Zona','Vendedor','Fecha','Cliente'} ;
WIDTHS {100,100,100,100};
VALUE { 1,1} ;
ROWSOURCE "stve" ;
COLUMNFIELDS { 'zona','vendedor','fecha','cliente' }
@ 10,470 GRID Grid_2 ;
WIDTH 450 ;
HEIGHT 200 ;
HEADERS {'Zona','Vendedor','Fecha','Cliente'} ;
WIDTHS {100,100,100,100};
VALUE { 1,1} ;
ROWSOURCE "MiDB" ;
COLUMNFIELDS { 'zona','vendedor','fecha','cliente' }
DEFINE BUTTON BUTTON1
ROW 260
COL 10
CAPTION 'Filtro'
ACTION FiltraTabla()
WIDTH 150
END BUTTON
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return
/***/
static Function FiltraTabla()
LOCAL nItems
ordsetfocus(1)
DesFec:=ctod( "01/10/2013" )
HasFec:=ctod( "31/10/2013" )
DesVen:="19"
HasVen:="20"
DesZona:="06"
HasZona:="06"
DesCli:="0000"
HasCli:="9999"
ordscope( 0,DesZona +Dtos( DesFec ) + DesVen + DesCli )
ordscope( 1,HasZona +Dtos( HasFec ) + HasVen + HasCli )
go top
DO WHILE !EOF()
MiDB->(dbAppend())
MiDB->Zona := stve->Zona
MiDB->Fecha := stve->Fecha
MiDB->Vendedor:= stve->Vendedor
MiDB->Cliente := stve->Cliente
stve->(DBSKIP())
END DO
Select("MiDB")
ordscope( 0,DesVen )
ordscope( 1,HasVen )
DBSELECTAREA(1)
Form_1.Grid_2.Refresh
Return Nil
/***/
static Function CreaTabla()
local aEstru
aEstru:={ { "zona","C",2,0 },;
{ "cliente","C",4,0 },;
{ "fecha","D",8,0 },;
{ "vendedor","C",2,0 }}
aDB := aEstru
DbCreate( "stve",aEstru )
DbCreate( "MiDB",aDB )
use MiDB new shared
index on vendedor tag MiDB
use stve new shared
*index on Dtos( fecha ) +zona +cliente +vendedor tag STVE
index on zona + DToS(fecha) + vendedor + cliente tag STVEZO
retu Nil
static Function AgreDatos()
stve->( DbAppend() )
stve->zona :="06"
stve->cliente :="0057"
stve->fecha :=ctod( "08/10/2013" )
stve->vendedor:="20"
stve->( DbAppend() )
stve->zona :="02"
stve->cliente :="0855"
stve->fecha :=ctod( "09/10/2013" )
stve->vendedor:="14"
stve->( DbAppend() )
stve->zona :="06"
stve->cliente :="0628"
stve->fecha :=ctod( "10/09/2013" )
stve->vendedor:="19"
stve->( DbAppend() )
stve->zona :="10"
stve->cliente :="0019"
stve->fecha :=ctod( "11/10/2013" )
stve->vendedor:="03"
stve->( DbAppend() )
stve->zona :="06"
stve->cliente :="0020"
stve->fecha :=ctod( "12/10/2013" )
stve->vendedor:="19"
stve->( DbAppend() )
stve->zona :="06"
stve->cliente :="0821"
stve->fecha :=ctod( "02/10/2013" )
stve->vendedor:="07"
retu Nil
Antonio
Sistemas
Resipol
Sistemas
Resipol
-
- Posts: 1275
- Joined: Tue Sep 03, 2013 4:22 am
- Location: Tecámac, México
Re: Ordscope() ¿Tiene alguna limitación?
Hola Citro,
Ya me estoy preocupando con la velocidad en red, también en otro Post han señalado esa preocupante. No se que sea lo que este fallando, si es la red o si es HMG o encontrar el truco de programar para que sea rápido.
Creo que en la semana haré algunas pruebas y haber que pasa?.
Saludos
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Hello Citro,
I'm already concerned with speed networking, also pointed out in another post that worrisome. That is not what this failing, if the network or if HMG or find programming trick to make it faster.
I think I will do some testing week and see what happens?.
regards
Ya me estoy preocupando con la velocidad en red, también en otro Post han señalado esa preocupante. No se que sea lo que este fallando, si es la red o si es HMG o encontrar el truco de programar para que sea rápido.
Creo que en la semana haré algunas pruebas y haber que pasa?.
Saludos
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Hello Citro,
I'm already concerned with speed networking, also pointed out in another post that worrisome. That is not what this failing, if the network or if HMG or find programming trick to make it faster.
I think I will do some testing week and see what happens?.
regards