Power Builder - Ordenacion de la columna de un crosstab

 
Vista:

Ordenacion de la columna de un crosstab

Publicado por Rafael (7 intervenciones) el 26/06/2008 18:41:22
Estoy realizando una aplicacion para la cual necesito utilizar los datawindow de tipo crosstab. Esta tabla crece hacia la derecha segun un campo "@nombrecalibre", el problema es que necesito ordenar las columnas segun un valor asociado a ese nombre de calibre y los crosstab por lo que parece lo ordenan segun la etiqueta que utilizas para el crosstab.

Lo primero que se me ocurrio fue concatenar en el select delante de "@nombrecalibre" el valor del calibre por el cual quiero ordenar, por ejemplo

001CalibreA
002CalibreB
..
.
.
.

Ahora me ordena bien el crosstab, pero no hay manera de eliminar utilizando la expresion asociada a la columna esos 3 caracteras iniciales que le puesto para ordenar, puesto que no puedo poner

mid(@nombrecalibre, 3)

@nombrecalibre no es disponible para montar la expresion

Alguna sugerencia.???
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
Imágen de perfil de Antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

RE:Ordenacion de la columna de un crosstab

Publicado por Antonio (1271 intervenciones) el 27/06/2008 02:21:47
Hola Rafael:

1) Porque no usas la funcion de SetFilter() ?

Ejemplo;

string ls_filtro

ls_filtro = 'campo1 =`+ls_valor1+` campo2 = `+ls_valor2
SetFilter ( dw_datawindow, ls_filter )
Filter (dw_datawindow)

2) En cuanto a lo que estas haciendo con mid(@nombrecalibre, 3) te falta un parametro,, debe quedar asi;

mid(@nombrecalibre, 1,3)

Explicacion:

mid(@nombrecalibre,posicion inicial, posicion final)

Espero haberte ayudado...

Saludos desde Mèxico
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:Ordenacion de la columna de un crosstab

Publicado por Rafael  (7 intervenciones) el 30/06/2008 15:51:22
No entiendo que tiene que ver los filtros con lo que estaba preguntando, pero gracias de todas formas.

En cuanto al segundo punto, la posicion final no es obligatoria, si no la pones, te coge hasta el final.

De todas formas, ya lo tengo solucionado, he conseguido realizar la ordenacion dinamica de un corsstab en funcion de los valores de la base de datos y no de los que muestra.

El truco es asumir que va a hacer lo que el quiere, osea que va a ordenas por orden alfabetico. Asi que le concateno delante a la cadena que va a formar el crosstab los valores por los que quiero ordenar.

El tema es ocultar esa subcadena en tiempo de ejecucion.

valor = this.Describe( nombre_columna + "_t.Text" )
valor = Mid(Valor, 4)
this.Modify(nombre_columna+"_t.text='" + Valor + "'")

Con eso quito los 3 caracteres que he puesto delante para la ordenacion y me deja la cadena original que aparece en la cabecera..

Hay que hacer eso para todas las columnas que quieras modificar..


Saludos
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