Swap entre columnas en xBrowse

Swap entre columnas en xBrowse

Postby horacio » Mon Nov 28, 2016 8:45 pm

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 view  RUN
//----------------------------------------------------------------------------//
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
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Swap entre columnas en xBrowse

Postby nageswaragunupudi » Tue Nov 29, 2016 4:46 pm

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

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10690
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Swap entre columnas en xBrowse

Postby Antonio Linares » Tue Nov 29, 2016 5:09 pm

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
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Swap entre columnas en xBrowse

Postby horacio » Tue Nov 29, 2016 8:54 pm

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: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Swap entre columnas en xBrowse

Postby horacio » Tue Nov 29, 2016 9:24 pm

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
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Swap entre columnas en xBrowse

Postby Antonio Linares » Wed Nov 30, 2016 8:23 am

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
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Swap entre columnas en xBrowse

Postby horacio » Wed Nov 30, 2016 9:08 pm

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

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

Re: Swap entre columnas en xBrowse

Postby horacio » Wed Nov 30, 2016 9:08 pm

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: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Swap entre columnas en xBrowse

Postby horacio » Wed Nov 30, 2016 9:08 pm

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

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

Re: Swap entre columnas en xBrowse

Postby horacio » Wed Nov 30, 2016 9:12 pm

Algo anda mal aqui, edité el post y me lo duplica ...
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 92 guests