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í?
Si tampoco funciona prueba también así:
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