Power Builder - Hacer invisible campo en dw Crosstab

 
Vista:

Hacer invisible campo en dw Crosstab

Publicado por hernan (42 intervenciones) el 23/02/2005 23:03:44
Hola amigos foristas la consulta que tengo es la sgte : tengo un dw crosstab ya diseñado pero hay un campo que deseo volverlo invisible el campo esta en la seccion columns del crosstab pero cuando le quito la propiedad de visible no ocurre nada, hay alguna manera de poder hacer invisible una columna en dw crosstab?, esoty utilizando Power Builder 9.0 y MS Sql server 2000 Gracias a cada uno de las personas que puedan orientarme
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:Hacer invisible campo en dw Crosstab

Publicado por Oscar (1178 intervenciones) el 24/02/2005 04:36:43
Primero debes averiguar los nombres de las columnas que se FORMAN en un crosstab. Se utiliza el staticmode en yes. Es decir, después del dw_1.Retrieve(), debes pegar:

dw_1.object.datawindow.crosstab.staticmode='Yes'

La anterior línea, creará automáticamente un conjunto de nombres por referencia. Si los datos de la columna se llama Sueldo; entonces, la primera columna se llamará: Sueldo, la segunda columna: Sueldo_1, la tercera: Sueldo_2, etc.

De la misma manera, los encabezados de las columnas, se llamarán:
Sueldo_t, Sueldo_1_t, Sueldo_2_t, respectivamente.

Para estar seguro de los nombres de las columnas de tu crosstab, debes colocar el siguiente script en el evento Clicked del control DW:

String ls_clicked
ls_clicked = dw_1.GetObjectAtPointer()
messagebox( '', ls_clicked )
//---------Fin------------

Ahora, solo debes jugar con la propiedad visible de tu columna. Por ejemplo, en un botón puedes pegar:

//Para volver invisible la segunda columna:
dw_1.Modify("sueldo.Visible=0")

//Para volver invisible la tercera columna:
dw_1.Modify("sueldo_1.Visible=0")
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:Hacer invisible campo en dw Crosstab

Publicado por hernan (42 intervenciones) el 24/02/2005 16:04:24
Gracias Oscar.. dime una ultima consulta y en un datastore que contenga un crosstab es posible tambien alli poder ocultar su columna? ya que le he agregado el codigo pero sale erro :(
gracias

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:Hacer invisible campo en dw Crosstab

Publicado por Oscar (1178 intervenciones) el 25/02/2005 03:24:32
Hola:
Quizá estoy entendiendo mal tu pregunta; pero se supone que un DataStore es un DataWindow no visual o INVISIBLE. ¿Entonces, cómo pretendes ocultar una columna en algo que desde el principio no se ve?.

Un Datastore se usa, por ejemplo cuando no es necesario ver el DW; pero sí imprimirlo. Si por ahí va tu pregunta; es decir, deseas imprimir tu crosstab con una columna oculta, entonces el script sería así:

datastore lds_dstore

lds_dstore = CREATE datastore
lds_dstore.DataObject="d_crosstab"
lds_dstore.SetTransObject (SQLCA)
lds_dstore.Retrieve()

//Debes fijar el nombre de las columnas
lds_dstore.object.datawindow.crosstab.staticmode='Yes'

//Nombre de la columna que deseas ocultar al imprimir
lds_dstore.Modify("sueldo_1.Visible=0")
//Imprimimos:
lds_dstore.Print()

//No olvides destruirlo
Destroy lds_dstore
//--------Fin------
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:Hacer invisible campo en dw Crosstab

Publicado por hernan (42 intervenciones) el 25/02/2005 15:14:02
Precisamente el datastore lo uso para impresion, le he agregado el codigo que me ofreciste pero me sale un erro en el datastore en esta linea de codigo :
lds_dstore.object.datawindow.crosstab.staticmode='Yes'
EL mensaje que me muestra y me bota del sistema es este : "Error accessing external object property staticmode", en un dw normal si me acepta pero el problema es en el datastore que deseo que imprima me sale este mensaje, si pudieras darme alguna sugerencia te lo agradeceria de sobremanera... gracias 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

RE:Hacer invisible campo en dw Crosstab

Publicado por hernan (42 intervenciones) el 25/02/2005 16:15:45
me olvidaba decir que ese datastore guarda un dw composite ya que alli contiene el dw crosstab y otro dw de cabecera, no se si sera por eso
que no puedo accesar, intente con el getchild para obtener el dw crosstab pero el dw child no me acepta la propiedad del object.datawindow 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

RE:Hacer invisible campo en dw Crosstab

Publicado por Oscar (1178 intervenciones) el 25/02/2005 20:35:17
En esencia tu pregunta se reduciría a lo siguiente:
¿Cómo ocultar la columna de un DW crosstab, que está dentro de un Composite?.

Pues bien, se debe utilizar el getchild y el staticmode=yes; en este último caso, pero NO debes utilizar la notación punto que se te propuso; sino debes utilizar Modify. Es decir:

datawindowchild ldwc_dw_interno

//Capturamos el dw_crosstab que está dentro del COMPOSITE
dw_composite.getchild('dw_crosstab',ldwc_dw_interno)

//Fijamos las columnas con Modify
ldwc_dw_interno.Modify("DataWindow.Crosstab.StaticMode=yes")

//Ahora recién podemos ocultar la columna del crosstab
ldwc_dw_interno.Modify("Sueldo_1.Visible=0")
//-------------Fin---------------------------------------------

Nota: Debes estar seguro del nombre de la columna del crosstab. Para averiguarlo, crea un DW sólo con el crosstab, y verificá el nombre de la columna que deseas ocultar con el método que se explicó en el primer post.
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:Hacer invisible campo en dw Crosstab

Publicado por hernan (42 intervenciones) el 25/02/2005 21:20:07
Gracias Oscar salio todo bien
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