xBrowse, bSeek y lAutoOrder
Posted: Fri Jun 28, 2013 2:32 pm
Hola foro,
esta manañana estaba intentando reutilizar una porción de código que funcionaba originalmente con FWH 12.11, y al incorporarla al nuevo proyecto desarrollado con FWH 13.05, ha dejado de funcionar.
Inicialmente, pense que era algún problema con el código, y despues de revisarlo detenidamente y no encontrar nada, me decidi a rastrear la calse xBrowse, y allí encontre el problema.
El problema es que en mi funciíon hago uso de una busqueda incremental personalizada, que asigo al DATA bSeek, pero este DATA se sobreescribe siempre en el metodo SetRdd, que se llama siempre desde el metodo initiate. Antes habia un if, que hoy aparece comentado, en la linea 3979.
Si lAutorder era falso, bSeek no era modificado. Mi pregunta es, ese cambio, supongo que será para arreglar/mejorar algo, quisiera conocer que. Y en la medida de lo posible para compatibilizar mi software, me gustaria que volviera el IF lAutoOrder, o en us defecto que no se modificase bSeek, si ya está asignado.
esta manañana estaba intentando reutilizar una porción de código que funcionaba originalmente con FWH 12.11, y al incorporarla al nuevo proyecto desarrollado con FWH 13.05, ha dejado de funcionar.
Inicialmente, pense que era algún problema con el código, y despues de revisarlo detenidamente y no encontrar nada, me decidi a rastrear la calse xBrowse, y allí encontre el problema.
El problema es que en mi funciíon hago uso de una busqueda incremental personalizada, que asigo al DATA bSeek, pero este DATA se sobreescribe siempre en el metodo SetRdd, que se llama siempre desde el metodo initiate. Antes habia un if, que hoy aparece comentado, en la linea 3979.
- Code: Select all Expand view
// if lAutoOrder
(::cAlias)->( OrderTagInfo( aStruct, 8 ) )
for nFor := 1 to Len( ::aCols )
if ( n := AScan( aStruct, { |a| a[ 1 ] == Upper( ::aCols[ nFor ]:cHeader ) } ) ) > 0
::aCols[ nFor ]:cSortOrder := aStruct[ n ][ 8 ]
::aCols[ nFor ]:cOrdBag := ( cAlias )->( OrdBagName( ::aCols[ nFor ]:cSortOrder ) )
endif
next nFor
::bSeek := { |c,u| ( ::cAlias )->( ::RddIncrSeek( c, @u ) ) }
// endif
Si lAutorder era falso, bSeek no era modificado. Mi pregunta es, ese cambio, supongo que será para arreglar/mejorar algo, quisiera conocer que. Y en la medida de lo posible para compatibilizar mi software, me gustaria que volviera el IF lAutoOrder, o en us defecto que no se modificase bSeek, si ya está asignado.
- Code: Select all Expand view
- DEFAULT ::bSeek := { |c,u| ( ::cAlias )->( ::RddIncrSeek( c, @u ) ) }