Swap entre columnas en xBrowse

Post Reply
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Swap entre columnas en xBrowse

Post by horacio »

Colegas, tengo un xBrowse y en algunos headers defino una función de ordenamiento para esas columnas. Todo funciona bien siempre y cuando no haga un swap en las columnas que tienen asignada la función. Simplemente deja de funcionar. Parte del código

Code: Select all | Expand

//----------------------------------------------------------------------------//
Function OrdenaColumna( oCol ) 

    //? oCol : cHeader, corden
    Switch oCol : cHeader
        Case 'CÓDIGO'
            If( cOrden # 'CÓDIGO' )
                lCreciente := .f.
            End 
            If( lCreciente )
                oQry : SetOrder( 'a.codigo', .t. )
                lCreciente := .f.
            Else   
                oQry : SetOrder( 'a.codigo desc', .t. )
                lCreciente := .t.
            End        
            oBrw : Refresh()
            Exit
        Case 'ALUMNO'
            If( cOrden # 'ALUMNO' )
                lCreciente := .f.
            End 
            If( lCreciente )
                oQry : SetOrder( 'a.alumno', .t. )
                lCreciente := .f.
            Else   
                oQry : SetOrder( 'a.alumno desc', .t. )
                lCreciente := .t.
            End        
            oBrw : Refresh()
            Exit
        Case 'CURSO'
            If( cOrden # 'CURSO' )
                lCreciente := .f.
            End 
            If( lCreciente )
                oQry : SetOrder( 'descrip_cursos( a.curso ), a.alumno', .t. )
                lCreciente := .f.
            Else   
                oQry : SetOrder( 'descrip_cursos( a.curso ) desc, a.alumno', .t. )
                lCreciente := .t.
            End        
            oBrw : Refresh()
            Exit
        Case 'LOCALIDAD'
            If( cOrden # 'LOCALIDAD' )
                lCreciente := .f.
            End 
            If( lCreciente )
                oQry : SetOrder( 'a.localidad, a.alumno', .t. )
                lCreciente := .f.
            Else   
                oQry : SetOrder( 'a.localidad desc, a.alumno', .t. )
                lCreciente := .t.
            End        
            oBrw : Refresh()
            Exit
        Case '_'
            If( cOrden # '_' )
                lCreciente := .f.
            End 
            If( lCreciente )
                oQry : SetOrder( 'a._, a.alumno ', .t. )
                lCreciente := .f.
            Else   
                oQry : SetOrder( 'a._ desc, a.alumno', .t. )
                lCreciente := .t.
            End        
            oBrw : Refresh()
            Exit
    EndSwitch      
    Return 0
 


Como verán, verifico el título del header y de acuerdo al resultado ordeno la columna correspondiente. Las dos primeras columnas son "CODIGO" y "ALUMNO", si hago un swap me quedaría "ALUMNO" y "CODIGO". Al picar en el header de "CODIGO" la cabecera me devuelve "ALUMNO" y si pico "ALUMNO" me devuelve "CODIGO". Alguien que me pueda orientar. Muchisimas gracias

Saluudos
User avatar
nageswaragunupudi
Posts: 10721
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Been thanked: 8 times
Contact:

Re: Swap entre columnas en xBrowse

Post by nageswaragunupudi »

May we know the FWH version you are using?
Are you using TDolphin?
Regards

G. N. Rao.
Hyderabad, India
User avatar
Antonio Linares
Site Admin
Posts: 42529
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 77 times
Contact:

Re: Swap entre columnas en xBrowse

Post by Antonio Linares »

Me comenta Rao que si usas la claúsula AUTOSORT al crear el browse, te ahorras todo ese código :-)

Que versión de FWH usas ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Swap entre columnas en xBrowse

Post by horacio »

Gracias a ambos por sus respuestas. La versión que utilizo es la 14.12 y uso TDolphin. Con respecto a AUTOSORT si bien ordena las columnas, necesito un ordenamiento especial como por ejemplo si ordeno por cursos, también me lo ordene alfabéticamente y así con los distintos ordenamientos.

Saludos
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Swap entre columnas en xBrowse

Post by horacio »

También intenté con oCol : nCreationOrder pensando que esta data guardaba el número de columna en el momento de crear el objeto pero no es así. Las dos primeras columnas del browse son 'CODIGO" y "ALUMNO". Si pico en el header de "CODIGO" me devuelve 1, 2 si pico en "ALUMNO". Si hago un swap entre estas dos columnas, "ALUMNOS" y "CODIGO", ahora "CODIGO" me devuelve 2 y 1 "ALUMNOS". Me puedo equivocar pero tengo idea que en algún momento oCol : nCreationOrder funcionaba como describí al principio.

Saludos
User avatar
Antonio Linares
Site Admin
Posts: 42529
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 77 times
Contact:

Re: Swap entre columnas en xBrowse

Post by Antonio Linares »

Horacio,

Me indica Rao lo siguiente:

AUTOSORT:
Si queremos que las columnas se ordenen con diferentes nombres de campos entonces:
oCol:cSortOrder := <fieldnames>

Ejemplo:
oCol:cSortOrder := "FIRST,LAST"

No especifiques ASC or DESC. XBrowse internamente añade ASC or DESC según lo solicitado.

Por lo que es posible hacer lo que deseas usando AUTOSORT sin tener que escribir ninguna función adicional.

Al intercambiar ó mover las columnas, bien por el usuario ó por llamar a oBrw:SwapCols() o oBrw:MoveCol() no modifica la cebecera de la columna ó nCreationOrder.

la function OrdenaColumna( oCol ) está recibiendo un valor erróneo para oCol. Esto se debe a que no se está llamando correctamente a la función desde el browse.
Solo podemos ayudarte si vemos el código completo
regards, saludos

Antonio Linares
www.fivetechsoft.com
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Swap entre columnas en xBrowse

Post by horacio »

Antonio, probaré la sugerencia de Mr. Rao y comento. Muchísimaas gracias.

Saludos
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Swap entre columnas en xBrowse

Post by horacio »

Antonio, probaré la sugerencia de Mr. Rao y comento. Muchísimas gracias.

Saludos
Last edited by horacio on Wed Nov 30, 2016 9:11 pm, edited 1 time in total.
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Swap entre columnas en xBrowse

Post by horacio »

Antonio, probaré la sugerencia de Mr. Rao y comento. Muchísimas gracias.

Saludos
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Swap entre columnas en xBrowse

Post by horacio »

Algo anda mal aqui, edité el post y me lo duplica ...
Post Reply