Página 1 de 1

C6 - Esconder columna en un Reporte

Publicado: Mié Dic 28, 2016 2:30 pm
por magamaso
Hola!

No tengo mucha experiencia con Reportes de Clarion. Tengo un reporte que muestra vs columnas de Costos, según una variable tengo que mostrar o no algunos de esos Costos. Pruebo con {PROP:HIDE} pero no funciona, me muestra siempre todas las columnas... Quizás no lo estoy poniendo en el embebido o con la prioridad que corresponde. Alguien me puede ayudar con esto? Debería ser algo muy sencillo...

Gracias!

Gabriela

Re: C6 - Esconder columna en un Reporte

Publicado: Mié Dic 28, 2016 3:12 pm
por Mauricio
Antes de hacer el HIDE tenés que hacer el SetTarget(REPORT), luego el HIDE, luego SetTarget()

Re: C6 - Esconder columna en un Reporte

Publicado: Mié Dic 28, 2016 5:45 pm
por magamaso
Gracias Mauricio por responder, me podés decir en qué embebido se debe poner?

Re: C6 - Esconder columna en un Reporte

Publicado: Mié Dic 28, 2016 6:18 pm
por Mauricio
Abre el source, buscas Print(rpt:detail) y ponlo antes de eso.

Re: C6 - Esconder columna en un Reporte

Publicado: Mié Dic 28, 2016 6:42 pm
por magamaso
Funcionó perfecto!! Gracias!!!

Tengo que ocultar tb el título de estas columnas que oculto, los string de los títulos los tengo en el HEADER, sabes dónde debo colocar el código para eso? Busqué dónde se imprime el HEADER en Source pero no lo encuentro...

Re: C6 - Esconder columna en un Reporte

Publicado: Mié Dic 28, 2016 11:30 pm
por HDMadeira
Hola, tal vez colocar strings variables locales en el header y en el detail
de modo que sean asignadas de acuerdo a la condición por ejemplo...
antes del open report

if condición=1 then
hdr:titulo1='Unitario'
hdr:titulo2='stock minimo'
hdr:titulo3='lo que sea....'
!etc
.
if condición=2 then
hdr:titulo1='.....'
hdr:titulo2='.....'
hdr:titulo3='.....'
!etc
.




luego antes de print (rpt:detail)
if condición=1 then
det:text1=format(tbl:unitario,@n5.2)
det:text2=format(tbl:minimo,@n5)
!etc
.
if condición=2 then
det text1=....
det:text2=....
.


otra opción seria crear los controles en runtime
y asignarles la prop:text y la prop:use según la condicion

Saludos

Daniel

Re: C6 - Esconder columna en un Reporte

Publicado: Jue Dic 29, 2016 12:26 pm
por magamaso
Gracias Daniel, encontré otra forma más simple, similar a la que sugirió Mauricio.

1) Para ocultar el título de la columna en el Header (en el After Opening Report (4000)):

If CONDICION = xx
Report$?StringZZZ{PROP:HIDE}=1
End

Obs: hay que poner "Report$" delante del nombre del control a ocultar, y debe escribirse en el embebido "After Opening Report", no en el "Before Opening Report"

2) Para ocultar la columna con los datos (justo antes del Print(detail)):

If CONDICION = xx
SetTarget(REPORT)
?VariableZZZ/?CampoZZZ{PROP:HIDE}=1
SetTarget()
End

Obs: debe ponerse "SetTarget(REPORT)" antes del HIDE y "SetTarget()" luego del HIDE.
Se pone ?VariableZZZ o ?CampoZZZ, dependiendo de lo que se quiere ocultar, si es una variable o el nombre de un campo de una tabla.