Jasper reports 没有数据时如何评估jasper报表变量?

Jasper reports 没有数据时如何评估jasper报表变量?,jasper-reports,Jasper Reports,我有一个报告,它使用一个参数来确定报告标题。当没有数据时,它将显示null。我尝试更改变量$V{reportName}的计算时间,但没有成功。有人能帮我吗 谢谢。 PS:它正在使用mssql数据适配器,当前查询字符串不返回任何行。要返回行,请将2=1更改为1=1 <?xml version="1.0" encoding="UTF-8"?> <!-- Created with Jaspersoft Studio version 5.6.1.final using JasperRe

我有一个报告,它使用一个参数来确定报告标题。当没有数据时,它将显示null。我尝试更改变量$V{reportName}的计算时间,但没有成功。有人能帮我吗

谢谢。 PS:它正在使用mssql数据适配器,当前查询字符串不返回任何行。要返回行,请将2=1更改为1=1

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 5.6.1.final using JasperReports Library version 5.6.1  -->
<!-- 2017-05-02T07:59:20 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Evaluate" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a736ce53-7e76-4194-9086-96d2270a6250">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="SYDPC1744-EXPRESSR2"/>
    <parameter name="ReportType" class="java.lang.String">
        <defaultValueExpression><![CDATA["B"]]></defaultValueExpression>
    </parameter>
    <queryString language="SQL">
        <![CDATA[select Col1 from (values (1),(2)) as a(Col1) where 2=1]]>
    </queryString>
    <field name="Col1" class="java.lang.Integer"/>
    <variable name="ReportName" class="java.lang.String">
        <variableExpression><![CDATA[$P{ReportType}.equals("A")? $V{reportTitleA}:$V{reportTitleB}]]></variableExpression>
    </variable>
    <variable name="reportTitleA" class="java.lang.String">
        <variableExpression><![CDATA["Report A"]]></variableExpression>
    </variable>
    <variable name="reportTitleB" class="java.lang.String">
        <variableExpression><![CDATA["Report Other"]]></variableExpression>
    </variable>
    <pageHeader>
        <band height="49" splitType="Stretch">
            <textField evaluationTime="Report">
                <reportElement x="0" y="0" width="390" height="20" uuid="98c519b9-7350-4cd6-a71e-f2fb1c0e7b80"/>
                <textFieldExpression><![CDATA[$V{ReportName}]]></textFieldExpression>
            </textField>
        </band>
    </pageHeader>
    <columnHeader>
        <band height="14" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="15" splitType="Stretch">
            <property name="local_mesure_unitheight" value="pixel"/>
            <property name="com.jaspersoft.studio.unit.height" value="px"/>
            <textField>
                <reportElement x="0" y="0" width="100" height="14" uuid="82ab5741-1138-4173-88f5-42ef07a6cb9f">
                    <property name="local_mesure_unitheight" value="pixel"/>
                    <property name="com.jaspersoft.studio.unit.height" value="px"/>
                </reportElement>
                <textFieldExpression><![CDATA[$F{Col1}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

你的问题是设置

而不是这个

用于计算。只用于计算

用于此变量的初始值

当没有数据时,jasperreports将不会通过计算表达式,因为没有方法,您可以不使用任何数据进行计算

所以只要使用初始值表达式

在这种情况下,更改元素的计算时间没有任何好处,因此您可以跳过它

还要记住,通过对变量使用良好的顺序,可以避免许多错误

以下是工作代码摘录:

<variable name="reportTitleA" class="java.lang.String">
    <initialValueExpression><![CDATA["Report A"]]></initialValueExpression>
</variable>
<variable name="reportTitleB" class="java.lang.String">
    <initialValueExpression><![CDATA["Report Other"]]></initialValueExpression>
</variable>
<variable name="ReportName" class="java.lang.String">
    <initialValueExpression><![CDATA[$P{ReportType}.equals("A")? $V{reportTitleA}:$V{reportTitleB}]]></initialValueExpression>
</variable>
<pageHeader>
    <band height="49" splitType="Stretch">
        <textField>
            <reportElement x="0" y="0" width="390" height="20" uuid="98c519b9-7350-4cd6-a71e-f2fb1c0e7b80"/>
            <textFieldExpression><![CDATA[$V{ReportName}]]></textFieldExpression>
        </textField>
    </band>
</pageHeader>

谢谢我在办公室的时候会试试。这只有在没有数据的情况下才有效。为了使其在有/无数据的情况下工作,我将值放在初始表达式和变量表达式上。谢谢