Page 1 of 1

Como enumerar un xBrowse

Posted: Tue May 11, 2010 8:44 pm
by acuellar
Hola amigos

Cómo hago para enumerar en forma correlativa en una columna de un Browse que muestra una base indexada.

Creí que era fácil con oBrw:nAt() pero siempre me muestra 1

Gracias por la ayuda

Saludos

Adhemar

Re: Como enumerar un xBrowse

Posted: Tue May 11, 2010 10:40 pm
by jrestojeda
Hola...
Probaste poniendo un simple contador?
Saludos, Esteban.

Re: Como enumerar un xBrowse

Posted: Tue May 11, 2010 10:46 pm
by acuellar
Si, Esteban

En el momento del Change, se vuelve a incrementar

Gracias

Saludos

Adhemar

Re: Como enumerar un xBrowse

Posted: Tue May 11, 2010 10:48 pm
by jrestojeda
Hola...
Y así?

Code: Select all | Expand

STR(TABLA->OrdKeyNo())


Si tampoco funciona prueba también así:

Code: Select all | Expand

STR( (oBrw:cAlias)->(OrdKeyNo()) )


Saludos,

Re: Como enumerar un xBrowse

Posted: Wed May 12, 2010 1:03 am
by César E. Lozada
oBrw:aCols[1]:bEditValue:={|| oBrw:KeyNo() }

Por cierto.... ¿alguien sabe por qué esto no funciona con ADS y si hay alguna manera de hacerlo andar?

Re: Como enumerar un xBrowse

Posted: Wed May 12, 2010 1:25 am
by nageswaragunupudi
César E. Lozada wrote:oBrw:aCols[1]:bEditValue:={|| oBrw:KeyNo() }


This is the correct way.

Re: Como enumerar un xBrowse

Posted: Wed May 12, 2010 1:54 am
by nageswaragunupudi
César E. Lozada wrote:Por cierto.... ¿alguien sabe por qué esto no funciona con ADS y si hay alguna manera de hacerlo andar?


For ADS, XBrowse uses an approximate logic "ADSGetRelKeyPos()/ADSKeyCount()" for tables larger than 200 rows. This approximate logic is good enough for Vertical Scrollbar but not for displaying the indexed row number. XBrowse uses this approximate functions on large tables, because using OreKeyNo() is slow on very large tables.

So it is better to use oCol:bEditValue := { || ( oBrw:cAlias )->( OrdKeyNo() ) }.

Even ADS OrdKeyNo() does not give accurate results in some cases. ADS Server gives the correct number only if the filter used is fully resolved on the server. When we use SET DELETED ON, the OrdKeyNo() includes deleted records also.

If we want OrdKeyNo() to give accurate results we should take the following precasutions:

1. Create an index tag on "DELETED()".
Example: CREATE INDEX ON DELETED() TAG DELETED.
Every filter condition to include "<our condition> .AND. ! DELETED()"
2. Filters should be resolved by the server.
(a) Do not use alias names in filter expressions
(b) Use constants, not variables in filter expressions.
Instead of "CUSTNAME = cName", use "CUSTNAME = '" + cName + "'"

Re: Como enumerar un xBrowse

Posted: Wed May 12, 2010 2:30 am
by César E. Lozada
Very good explanation, nageswaragunupudi.

A day isn't full if we don't learn something new!

Thanks.

Re: Como enumerar un xBrowse

Posted: Wed May 12, 2010 1:02 pm
by acuellar
Gracias Distinguidos

Funciona con OrdKeyNo() y con oBrw:KeyNo(), hay que tomar en cuenta lo indica Nages.. que hay que indexar con DELETE() ya que lo toma en cuenta.
Ahora puedo elegir desde hasta.

Se que con oBrw:nMarqueeStyle = MARQSTYLE_HIGHLROWMS se puede seleccionar con SHIFT Y CTRL y los guarda en oBrw:aSelected.
Como obtengo los seleccionados?

Gracias por la ayuda

Saludos

Adhemar

Re: Como enumerar un xBrowse

Posted: Wed May 12, 2010 1:33 pm
by Daniel Garcia-Gil
Acuellar


los registros seleccionados estan guardados en el Array ::aSelected

Re: Como enumerar un xBrowse

Posted: Wed May 12, 2010 1:34 pm
by nageswaragunupudi
Se que con oBrw:nMarqueeStyle = MARQSTYLE_HIGHLROWMS se puede seleccionar con SHIFT Y CTRL y los guarda en oBrw:aSelected.
Como obtengo los seleccionados?

I am not sure if I understand the question correctly. oBrw:aSelected is an Array of RecNo()s ( not OrdKeyNo()s )

Re: Como enumerar un xBrowse

Posted: Wed May 12, 2010 8:00 pm
by acuellar
Distinguidos

En la tabla aSelected es unidimensional logro leer el primer registro, como se hace para leer los siguientes seleccionados

nPos:=oBrw_aSelected[1]

he colocado nPos:=oBrw_aSelected[1,1] y da error

Gracias por la ayuda

Saludos

Adhemar

Re: Como enumerar un xBrowse

Posted: Wed May 12, 2010 8:25 pm
by Daniel Garcia-Gil
Acuellar

tu lo has dicho, es unidimensional, lo recorres uno por uno

aSelected[ 1 ], aLelected[ 2 ], aSelected[ 3 ], ... aSelected[ n ]

aSelected es llenado con los RecNo()s

Re: Como enumerar un xBrowse

Posted: Wed May 12, 2010 8:40 pm
by acuellar
Gracias Daniel

Mi error era colocar [1] en ves de [ 1 ]

Saludos

Adhemar