Ordscope() ¿Tiene alguna limitación?

HMG en Español

Moderator: Rathinagiri

citro
Posts: 52
Joined: Wed Dec 22, 2010 3:45 pm

Re: Ordscope() ¿Tiene alguna limitación?

Post by citro »

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
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Ordscope() ¿Tiene alguna limitación?

Post by Javier Tovar »

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! :D
citro
Posts: 52
Joined: Wed Dec 22, 2010 3:45 pm

Re: Ordscope() ¿Tiene alguna limitación?

Post by citro »

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
Antonio
Sistemas
Resipol
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Ordscope() ¿Tiene alguna limitación?

Post by Javier Tovar »

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
Post Reply