2012-09-04 15 views
5

que tienen una banda Título con un campo de texto que contiene una variable calculada $V{avg_perc}. El campo de texto tiene la evaluationTime conjunto de Informe, lo mismo para las variables resetType. Ahora estoy tratando de establecer el color de fondo de este campo con un estilo condicional pero me aparece un mensaje de error que dice algo así como:uso de variables en estilo condicional

Invalid expression: !Double.isNaN($V{avg_perc}) && $V{avg_perc} >= 0.8 

que estoy haciendo exactamente lo mismo con el mismo Conditional Style en el Column Footer y funciona sin ningún problema, incluso si establezco el evaluationTime para este campo en Informe también.

Después de eliminar !Double.isNaN($V{avg_perc}) ya no obtengo un error pero la expresión aún no funciona. Mi campo permanece en rojo, que es el color básico cuando ninguna de las condiciones es válida, sin importar qué valor tenga $V{avg_perc}. Todavía funciona en el Columna de pie de página, sin embargo. Esta es mi estilo:

<style name="avg_color" mode="Opaque" backcolor="#FF0000" pdfFontName="Helvetica-Bold"> 
    <conditionalStyle> 
     <conditionExpression><![CDATA[$V{avg_perc} >= 0.8]]></conditionExpression> 
     <style backcolor="#008000"/> 
    </conditionalStyle> 
    <conditionalStyle> 
     <conditionExpression><![CDATA[$V{avg_perc} >= 0.6 && $V{avg_perc} < 0.8]]></conditionExpression> 
     <style backcolor="#FFCC00"/> 
    </conditionalStyle> 
</style> 

campos utilizados y variables para esto:

<field name="perc" class="java.lang.Double"/> 
<variable name="avg_perc" class="java.lang.Double" calculation="Average"> 
    <variableExpression><![CDATA[$F{perc}]]></variableExpression> 
</variable> 

alguna idea de cómo hacer que esta cosa para trabajar? Estoy usando JasperReports y iReport en la versión 3.7.4.

+0

¿Cuál es su * iReport * Los ajustes de estas propiedades: *** org.eclipse.jdt.core.compiler.source ***, *** org.eclipse.jdt.core.compiler.cumplimiento ***, *** org.eclipse.jdt.core.compiler.codegen.TargetPlatform ***? –

+0

1.5 para todos ellos – YingYang

+0

¿Se puede publicar la definición de la variable *** avg_perc ***? Por cierto, la expresión '! Double.isNaN ($ F {avg_perc}) && $ F {avg_perc}> = 0.8' me funciona - He cambiado la variable en el campo. –

Respuesta

8

Finalmente encontré la solución para mi problema. Añadiendo

<property name="net.sf.jasperreports.style.evaluation.time.enabled" value="true"/> 

a nivel de informe se produce un condicional Estilo que se realizará en el momento en el que se evalúa el elemento. Consulte this answer en la comunidad de Jaspersoft para obtener más información.

+0

+1 buena solución –

2

en su vista ireport designer.

clic en el campo y en el panel de propiedades de marcado .: = LABRÓ seleccionado

Haga clic derecho en el cado. Editar expresión:

($F{fila1}.equals("c") ? "<style forecolor='red'>"+ $F{fila1}+"</style>" : $F{fila1}) 

o xml

<textFieldExpression><![CDATA[($F{fila1}.equals("c") ? "<style forecolor='red'>"+ $F{fila1}+"</style>" : $F{fila1})]]></textFieldExpression> 
0

modificar este código en base a su requerimiento

<style name="alternateStyle" fontName="Arial"> 
    <conditionalStyle> 
     <conditionExpression><![CDATA[new Boolean($V{AMOUNT}.intValue() == 0)]]></conditionExpression> 
     <style mode="Opaque" backcolor="#FF0000" isBold="true"/> 
    </conditionalStyle> 
</style> 

y también hacer referencia en este enlace: Link

Cuestiones relacionadas