FoxPro/Visual FoxPro - Ordenar GRID Ascendente y Descendente

   
Vista:

Ordenar GRID Ascendente y Descendente

Publicado por sebastian (7 intervenciones) el 15/06/2010 20:12:03
Hola gente, necesito ordenar mi grid dandole un click en la cabecera en forma ascendente y descendente, ayudenmeeeeeeee.

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ordenar GRID Ascendente y Descendente

Publicado por Chente (70 intervenciones) el 16/06/2010 02:06:25
Primero tendrías que generar los indices necesarios:
Ejemplo1: nombre ascendente
Ejemplo2: nombre descendente

Luego en las propiedades del Grid, en el evento Click del Header puedes poner:

SET ORDER TO 1 o bien
SET ORDER TO 2

segun lo necesites.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenar GRID Ascendente y Descendente

Publicado por ACM (162 intervenciones) el 16/06/2010 06:43:46
Hola Sebastian

Hay varias formas de hacerlo, pero siguiendo el ejemplo del amigo chente usa un swch definie como publico en el init del form.

ejemplo en init

public sworde

sworde=0

en el evento click del header

if sworde=0
set orde to 1
sworde=1
else
set orde to 2
sworde=0
endif

espero te sirva

Acm.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenar GRID Ascendente y Descendente

Publicado por Gabriel Sànchez (2 intervenciones) el 18/06/2010 23:39:17
Hola,

Lo primero que debes hacer es indexar las columnas de tu cursor.

Ejemplo:

* Crear cursor.
create cursor cPersonal(codigo c(5), apellidos c(50), nombres c(50))

* Indexar.
index on codigo tag xcodigo
index on apellidos tag xapellidos
index on nombres tag xnombres

* Programaren los headers(Click)

*-----------------------------------------------------------------------------------
* column1.header1.click()
*
* Inicializar la propiedad Tag de cada header con la letra 'A'
*----------------------------------------------------------------------------------
select cPersonal
if This.Tag = 'A'
set order to xcodigo desc
This.Picture = 'imagen descendente' && Cualquier imagen referente.
This.Tag = 'D'
else
set order to xcodigo asc
This.Picture = 'imagen ascendente'
This.Tag = 'A'
endif
go top

This.Parent.Parent.Refresh()
--------------------------------------------------------------------------------

Lo mismo en cada header.

Suerte,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenar GRID Ascendente y Descendente

Publicado por Eduari1508 (1 intervención) el 14/10/2012 20:47:25
Amigo gracias por el aporte, todo bien pero te comento que solo me funciona por primera vez.
Te comento como estructure mi cursor
1. Primero paso todo mi tabla Alumnos a un cursor csrTemp, esto para poder mostrarlo en grid
2. Actualizo mi grid segun mi busqueda a travez de un metodo que cree. Aqui un ejemplo:

Metodo Buscar:
CASE xesc<>'' AND xdep<>'' AND xcat='' AND xedad=''

SELECT item,codalum,edad,dep,esc,esc_dist,esc_prov,cat,apepat,apemat,nom,dni FROM Alumnos WHERE Esc = xEsc AND Dep = xDep ORDER BY 9 INTO CURSOR csrTemp READWRITE

y asi sucesivamente con otras alternativas

En el Header de mi Grid en Click le coloque:

INDEX on Codalum TAG oCodalum
IF This.Tag = 'A'
SET ORDER to oCodalum DESCENDING
This.Picture = 'Descendente.png'
This.Tag = 'D'
ELSE
SET ORDER TO oCodalum ASCENDING
This.Picture = 'Ascendente.png'
This.Tag = 'A'
ENDIF
GO TOP

This.Parent.Parent.Refresh()

TODOS LOS HEADER FUNCIONAN EXCELENTE PERO SOLO CUANDO HAGO LA PRIMERA CONSULTA CON EL METODO BUSCAR, CUANDO REALIZO NUEVAMENTE LA CONSULTA UTILIZANDO EL METODO BUSCAR, YA NO ME GENERA NINGUNA FUNCION EN EL HEADER.

Antes que nada mil disculpas si soy un poco torpe al explicar mi problema.
Agradecere muchisimo tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenar GRID Ascendente y Descendente

Publicado por irene (1 intervención) el 21/11/2014 05:23:56
hola mira lo que pasa es que el index se aplica inmediatamente despues de crear tu cursor
SELECT item,codalum,edad,dep,esc,esc_dist,esc_prov,cat,apepat,apemat,nom,dni FROM Alumnos WHERE Esc = xEsc AND Dep = xDep ORDER BY 9 INTO CURSOR csrTemp READWRITE
INDEX on Codalum TAG oCodalum

y en el procedimiento clik del header

IF This.Tag = 'A'
SET ORDER to oCodalum DESCENDING
This.Picture = 'Descendente.png'
This.Tag = 'D'
ELSE
SET ORDER TO oCodalum ASCENDING
This.Picture = 'Ascendente.png'
This.Tag = 'A'
ENDIF
GO TOP

This.Parent.Parent.Refresh()

a mi me funciona a la perfeccion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar