Page 1 of 2

Ayuda xbrowse con DBF y CDX lento en RED

Posted: Fri Jun 14, 2013 3:15 pm
by AIDA
Hola

Tengo un programita para visualizar datos en un xbrowse en red
este programa consulta datos por claves pero se pone super lento que puede ser :?:
me podrían orientar :roll:

Gracias!

Saluditos :wink:

Re: Ayuda xbrowse con DBF y CDX lento en RED

Posted: Fri Jun 14, 2013 4:45 pm
by acuellar
AIDA

Si tiene FILTER hay que evitarlos, Es aconsejable usar SCOPE o INDICES para filtrar.

Saludos,

Adhemar

Re: Ayuda xbrowse con DBF y CDX lento en RED

Posted: Fri Jun 14, 2013 6:25 pm
by AIDA
UPS SI TENGO FILTERS :shock:

Como se usan esos SCOPE ?

Gracias

Saluditos :wink:

Re: Ayuda xbrowse con DBF y CDX lento en RED

Posted: Fri Jun 14, 2013 6:34 pm
by acuellar
Aida

Colocalo tu FILTER para verlo.

Saludos,

Adhemar

Re: Ayuda xbrowse con DBF y CDX lento en RED

Posted: Fri Jun 14, 2013 6:42 pm
by davidObarrio
Yo lo hago asi....

el archivo está indexado asi....

str(CODIINT,10)+str(EM_PARE,2)



#Include 'xbrowse.ch'
#define TOPSCOPE 0
#define BOTTOMSCOPE 1


@ 0.875,1 XBROWSE oBrwGRU ;
FIELDS (EMPLEGRU)->EM_NOMB , ;
HEADERS 'Nombre' ;
SIZES 200 ;
SIZE 200 ;
ALIAS EMPLEGRU OF oFol:aDialogs[3]

oBrwGRU:nRowDividerStyle = LINESTYLE_NOLINES
oBrwGRU:nColDividerStyle = LINESTYLE_BLACK
oBrwGRU:nMarqueeStyle = MARQSTYLE_HIGHLROW
oBrwGRU:CreateFromCode()

oBrwGRU:Seek( str(mCODIINT,10) )

eFiltro1 := {|| DBSELECTAREA(EMPLEGRU) ,;
(EMPLEGRU)->( OrdScope(BOTTOMSCOPE, str(mCODIINT,10) )) ,;
(EMPLEGRU)->( OrdScope(TOPSCOPE, str(mCODIINT,10) )) ,;
(EMPLEGRU)->(dbgotop()) }

EVAL(eFiltro1)


saludos

david

Re: Ayuda xbrowse con DBF y CDX lento en RED

Posted: Fri Jun 14, 2013 6:59 pm
by AIDA
a si tengo el filter

Set filter to ( cAlias )->poliza= irNueva1 .and. ( cAlias )->agente=IrNueva2

Saluditos :wink:

Re: Ayuda xbrowse con DBF y CDX lento en RED

Posted: Fri Jun 14, 2013 7:57 pm
by karinha
Hola Aida, use INDICE TEMPORARY es mejor y mas rapido:

Code: Select all | Expand


               SELECT CADNFE

               INDEX ON CADNFE->NFECOD       TAG 07 TO INFETEMP   ;
                        WHILE CADNFE->PEDIDCOD == PEDIDCOD2 .AND. ;
                              CADNFE->TPFAT_OP == "P"       .AND. ;
                              CADNFE->STATUS   == "IMP"     .OR.  ;
                              CADNFE->STATUS   == "CAN"     .OR.  ;
                              CADNFE->STATUS   == "APR"   TEMPORARY
 



Re: Ayuda xbrowse con DBF y CDX lento en RED

Posted: Mon Jun 17, 2013 12:04 am
by AIDA
Hola!

Muchas gracias revisare sus ejemplos son de mil amores :D

yo les comento como me quedo el cambio de codigo :)

Gracias!! :mrgreen:


Saluditos :wink:

Re: Ayuda xbrowse con DBF y CDX lento en RED

Posted: Mon Jun 17, 2013 4:39 pm
by jrestojeda
Aida...
Yo lo que uso sin problemas son los SCOPES, funcionan muy bien y rápido, pero hay que tener unas cositas en cuenta a la hora de usarlos.
Sólo se puede hacer un SCOPE sobre un tag de tu CDX, y si por algún motivo cambias el SetOrder en algún momento, el Scope se pierde.
Conceptualmente son muy rápidos, ya que con dos "SoftSeeks" internos te filtra y se queda sólo con lo que le interesa, es decir, el Scope, hace un SoftSeek al TOPSCOPE y otro SoftSeek al BOTTOMSCOPE y como la tabla está ordenada lo que hace es quedarse con lo que queda entre esos dos "SoftSeeks" y el resto lo descarta.
El set filter to, recorre toda la tabla verificando si se cumple con la condición de filtro.
Si no tienes un TAG como para poder hacer un SCOPE y tampoco puedes crearlo, podrías probar con un DBSETFILTER que en principio debería ser levemente más rápito que el SET FILTER TO.
Espero te sirva la idea...
Saludos,

Re: Ayuda xbrowse con DBF y CDX lento en RED

Posted: Mon Jun 17, 2013 7:17 pm
by AIDA
No capto como pasar mis filtros a esos scope :?

como quedaria este filtro :?:

Set filter to ( cAlias )->poliza= irNueva1 .and. ( cAlias )->agente=IrNueva2

en un scope :roll:



toy emburrada :oops:


Saluditos :wink:

Re: Ayuda xbrowse con DBF y CDX lento en RED

Posted: Mon Jun 17, 2013 7:41 pm
by jrestojeda
Aida...
Para poder ayudarte necesitamos saber que tipo de campo es POLIZA y AGENTE.
Y debes tener un Tag dentro de tu CDX con esos dos campos.
Saludos,

Re: Ayuda xbrowse con DBF y CDX lento en RED

Posted: Mon Jun 17, 2013 9:01 pm
by AIDA
Hola

POLIZA y AGENTE son alfa numéricos


Saluditos :wink:

Re: Ayuda xbrowse con DBF y CDX lento en RED

Posted: Mon Jun 17, 2013 11:09 pm
by sysctrl2
debes de tener, un índice POLIZA+AGENTE
saludos desde el D.Fectuoso.

Code: Select all | Expand

#define TOPSCOPE           1
#define BOTTOMSCOPE        2
FUNCTION Main()
    local cLimInf := "001" + "002"
    local cLimSup := "100" + "200"

    dbselectarea( cTabla )
    ordsetfocus( 1 )
    (cTabla)->( SetScope( cLimInf, cLimSup ) )
    xbrowse()
    ClearScope( cTabla )
RETURN NIL

function SetScope( xValorIni, xValorFin )

   DEFAULT xValorFin := xValorIni

   OrdScope( TOPSCOPE,    xValorIni )
   OrdScope( BOTTOMSCOPE, xValorFin )
   DBGoTop()

RETURN nil

Re: Ayuda xbrowse con DBF y CDX lento en RED

Posted: Mon Jun 17, 2013 11:15 pm
by sysctrl2
Perdon, aquí esta la función ClearScope()

es como hacer un SET FILTER TO

saludos.

Code: Select all | Expand

function ClearScope()

   OrdScope( TOPSCOPE    , NIL )
   OrdScope( BOTTOMSCOPE , NIL )
   DBGoTop()

RETURN nil


los scopes son rapidos, en tu caso creo que encajaria perfecto.

yo solo los uso en lugares específicos, por ejemplo:

nFolioInicial
nFolioFinal
==========================
fecha inicial, fecha final
=========================
etc.

Re: Ayuda xbrowse con DBF y CDX lento en RED

Posted: Wed Jun 19, 2013 1:03 am
by AIDA
Hola :D

ya aplique sus recomendaciones de scopes y indices temporales y si se noto una super mejoría :mrgreen:

pero que creen que me cambie de red temporalmente y ahora funciona super bien a un sin las modificaciones :shock:

pero como debe ser en la red anterior deberé ver que es lo que me esta alentando todo ya revise las compus de las dos redes usan el mismo antivirus con la misma configuración

que creen que pueda ser lo que me esta afectando la rapidez de conexión de mi programa :?:


Saluditos :wink: y un millón de kikos de mi parte :D