- 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