FoxPro/Visual FoxPro - Generalizar funcion SORT

 
Vista:

Generalizar funcion SORT

Publicado por Maria Cristina (33 intervenciones) el 14/02/2007 19:37:50
Hola, aver si me puede ayudar alguien, porque es algo que me intriga saber si se puede o no hacer.

Tengo un listbox, donde tengo todos los nombres de los campos del cursor que muestro en un grid, y los he llamado exactamente igual que en los campos del cursor, de modo que si clickas en uno de ellos, mi objetivo es que te reordenase el cursor por ese campo y te lo mostrara en el grid, el problema es que quiero gustaria hacerlo todo en un solo CASE, no quisiera tener que hacer uno para cada campo, y el problema esta al intentar generalizar para todos los casos posibles, la funcion SORT, lo que yo pongo es:
SORT TO "CurForm2" ON (THIS.LISTITEMID(THIS.LIST))/A
De esta manera he logrado que compile, pero al llegar a ejecutar esa sentencia me dice:
Invalid subscript reference
Os puedo decir tambien que al depurar he comprobado que por ejemplo:
(THIS.LISTITEMID(THIS.LIST)) = "Codigo", y me da ese error, en cambio si lo pongo en el SORT directamente de esta forma:
SORT TO "CurForm2" ON Codigo/A

así si funciona.
Si alguien me puede ayudar, millones de gracias.Chao
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
sin imagen de perfil

RE:Generalizar funcion SORT

Publicado por Ernesto Hernandez (4623 intervenciones) el 14/02/2007 19:50:49
mi objetivo es que te reordenase el cursor

Si lo que deseas es reordenar el cursor por que no utilizas indices ???
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:Generalizar funcion SORT

Publicado por CarlosA (86 intervenciones) el 14/02/2007 21:06:23
porque lo haces con la instruccion SORT ???... el comando SORT lo que hace es ordenar lo que tienes en tu tabla actual mandandolo a otra tabla...

lo mejor es crear un indice... si el cursor no es muy grande... pq de lo contrario se demoraria....

es decir en vez del SORT usas INDEX y ademas no uses como expresion del indice la referencia al LISTBOX , ya que eso genera errores extraños como el que te esta dando, lo mismo cuando usas SET FILTER TO THISFORM.TALCOSA.VALUE, eso tambien genera errores extraños... es mejor asignar esa referencia a una variable y usar esa variable como expresion del indice... mira como quedaria.

wcampo = THIS.LISTITEMID(THIS.LIST)
select cursor
index on &wcampo tag &wcampo

OTRA MANERA MAS FACIL

hay otra forma en la que no es necesario que tengas un listbox con la lista de campos... si lo que quieres es que el usuario ordene el grid por algun campo especifico se puede hacer lo siguiente.... puedes crear un indice en el momento que el usuario haga click sobre la columna... o sea en la propiedad click del header de cada columna de tu grid haces lo siguiente

wcampo = this.parent.controlsource
select cursor
index on &wcampo tag &wcampo

saludos

Carlos
Bogota, Col
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
sin imagen de perfil

RE:Generalizar funcion SORT

Publicado por Ernesto Hernandez (4623 intervenciones) el 14/02/2007 21:21:45
lo mejor es crear un indice... si el cursor no es muy grande... pq de lo contrario se demoraria....

CONSEJO .
Los indices se generan en modo de diseño no al momento

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:Generalizar funcion SORT

Publicado por CarlosA (86 intervenciones) el 14/02/2007 21:38:28
????.. se pueden crear indices en cualquier momento... por eso aclaro que depende del tamaño del cursor... ya que si el cursor se genera en tiempo de ejecucion no hay foma de crear el indice en modo de diseño....
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
sin imagen de perfil

RE:Generalizar funcion SORT

Publicado por Ernesto Hernandez (4623 intervenciones) el 14/02/2007 22:11:55
Claro hablando de un cursor pero por regla las tablas siempre deben de estar indexadas o me equivoco ???
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:Generalizar funcion SORT

Publicado por Maria Cristina (33 intervenciones) el 15/02/2007 10:02:10
Muchas gracias por contestar, la verdad que es mejor como dices, desde el Header, tiendo a complicarme un poco jiji, pero bueno tambien es que hace 2 semanas q llevo trabajando con este programa, entonces tampoco conozco todas las alternativas a la hora de programar. Gracias de nuevo y un saludo
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