Problema con aSelected

Post Reply
User avatar
Armando
Posts: 3382
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Problema con aSelected

Post by Armando »

Amigos foreros

Tengo definido un browse con

Code: Select all | Expand

:nMarqueeStyle    := MARQSTYLE_HIGHLROWMS // Para seleccionar registros

Para multi selección de registros

el Browse se muestra vacio y despues se llena por una condición

en el footer tengo el siguiente código para que me muestre la cantidad de registros seleccionados

Code: Select all | Expand

	:bFooter      := { || LEN( oBrw:aSelected ) }

El problema es que el footer del browse muestra 1 aunque el browse este vacio

Alguna pista?

Saludos y muchas gracias

SOI, s.a. de c.v.
[email protected]
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Antonio Linares
Site Admin
Posts: 44515
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Problema con aSelected

Post by Antonio Linares »

Estimado Armando,

El problema que describes ocurre porque el array aSelected del browse no se está inicializando o limpiando correctamente cuando el browse está vacío.

Causa

Cuando usas MARQSTYLE_HIGHLROWMS, el browse habilita automáticamente la multiselección. El array aSelected se inicializa como vacío en el método _InitData() 0-cite-0 , pero en ciertas condiciones puede contener datos residuales o un bookmark inválido.

Soluciones Opción 1: Inicializar explícitamente aSelected

Después de que el browse se llene con datos, asegúrate de limpiar el array:

Code: Select all | Expand

oBrw:aSelected := {}
Opción 2: Usar el método SelectNone()

Llama a este método después de llenar el browse:

Code: Select all | Expand

oBrw:SelectNone()
Opción 3: Validar en el footer

Modifica tu código del footer para manejar el caso cuando el browse está vacío:

Code: Select all | Expand

:bFooter := { || If( oBrw:nLen == 0, 0, LEN( oBrw:aSelected ) ) }
Opción 4: Verificar que aSelected no sea nil

También puedes agregar una validación adicional:

Code: Select all | Expand

:bFooter := { || If( oBrw:aSelected == nil, 0, LEN( oBrw:aSelected ) ) }
Recomendación

La solución más robusta sería combinar las opciones 3 y 4:

Code: Select all | Expand

:bFooter := { || If( oBrw:nLen == 0 .or. oBrw:aSelected == nil, 0, LEN( oBrw:aSelected ) ) }

Esto asegura que el footer muestre 0 cuando el browse está vacío, independientemente del estado del array aSelected.

regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Armando
Posts: 3382
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Problema con aSelected

Post by Armando »

Maestro Antonio:

Agradecido, excelente solución !, como siempre.

Saludos

SOI, s.a. de c.v.
[email protected]
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Post Reply