2013-10-15 3 views
0

하위 보고서의 값을 기본 보고서로 간단히 반환하려고하지만 보고서가 실행될 때 항상 null이 표시됩니다. iReport 5.1.0 사용. 주 보고서에 하위 보고서에서 요소의하위 보고서에서 주 보고서로 반환 된 값이 null입니다.

주 보고서

<?xml version="1.0" encoding="UTF-8"?> 
<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="report4" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="ce028d85-f7e8-4abd-ad6b-e3b2ba04d14e"> 
<property name="ireport.zoom" value="1.0"/> 
<property name="ireport.x" value="0"/> 
<property name="ireport.y" value="0"/> 
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> 
    <defaultValueExpression><![CDATA["C:\\Users\\DellXFR\\"]]></defaultValueExpression> 
</parameter> 
<variable name="z" class="java.lang.Integer" calculation="System"> 
    <variableExpression><![CDATA[8]]></variableExpression> 
</variable> 
<background> 
    <band splitType="Stretch"/> 
</background> 
<title> 
    <band height="79" splitType="Stretch"/> 
</title> 
<detail> 
    <band height="125" splitType="Stretch"> 
     <subreport> 
      <reportElement uuid="0c501730-d98a-4982-9953-2939f127ad9e" x="40" y="10" width="200" height="100"/> 
      <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
      <returnValue subreportVariable="x" toVariable="z"/> 
      <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "report4_subreport1.jasper"]]></subreportExpression> 
     </subreport> 
     <textField evaluationTime="Band"> 
      <reportElement uuid="9020a8d9-5799-4907-b8a3-704f41ffdcc0" x="399" y="73" width="100" height="20"/> 
      <textElement/> 
      <textFieldExpression><![CDATA[$V{z}]]></textFieldExpression> 
     </textField> 
    </band> 
</detail> 
<summary> 
    <band height="42" splitType="Stretch"/> 
</summary> 
    </jasperReport> 

하위 보고서

<?xml version="1.0" encoding="UTF-8"?> 
<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="report4_subreport1" language="groovy" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="78290b3a-34c2-496e-86ff-e213ca2c1039"> 
<property name="ireport.zoom" value="1.0"/> 
<property name="ireport.x" value="0"/> 
<property name="ireport.y" value="0"/> 
<queryString language="SQL"> 
    <![CDATA[select * from ot;]]> 
</queryString> 
<field name="salscheme_id" class="java.lang.String"> 
    <fieldDescription><![CDATA[]]></fieldDescription> 
</field> 
<field name="ot_amount" class="java.lang.Double"> 
    <fieldDescription><![CDATA[]]></fieldDescription> 
</field> 
<variable name="x" class="java.lang.Integer"> 
    <variableExpression><![CDATA[1]]></variableExpression> 
</variable> 
<group name="salscheme_id"> 
    <groupExpression><![CDATA[$F{salscheme_id}]]></groupExpression> 
</group> 
<background> 
    <band splitType="Stretch"/> 
</background> 
<detail> 
    <band height="125" splitType="Stretch"/> 
</detail> 
    </jasperReport> 
+0

주보고 변수 z, 하위 보고서 변수 x. 둘 다 정수입니다 – user2486322

+0

그리고 자체적으로 하위 보고서를 실행하면 null이 아닌 값이 반환됩니까? – Lisa

+0

내가 지정한 값을 보여줍니다. – user2486322

답변

1

패스 변수를 다음과 같이

  1. ma에서

    <variable name="subReportValue" class="java.lang.Integer"/> 
    

    참고 : 보고서에서 변수를 만들 하지 세트 계산 값를 수행합니다.

    <variable name="returnValue" class="java.lang.Integer" calculation="First"> 
        <variableExpression><![CDATA[$F{myField}]]></variableExpression> 
    </variable> 
    

    계산을 설정하고 당신이 반환하고자 : 하위 보고서에서

  2. 도 변수를 만들 수 있습니다. 참고 : 기본 보고서 변수의 클래스 값은 같음이어야합니다. 따라서, 당신은 세부 밴드의 subReportValue을 넣고 싶은 경우에

    <returnValue subreportVariable="returnValue" toVariable="subReportValue"/> 
    
  3. 이 바로 textFieldevalutationTime을 설정해야합니다 : 주 보고서에서

  4. 는 하위 태그의 하위 보고서 반환 값을 설정 하위 보고서 뒤에 있어야합니다 (그렇지 않으면 여전히 null입니다).

는 세부 밴드에없는 경우

<textField evaluationTime="Band"> 
     <reportElement x="251" y="109" width="100" height="20"/> 
     <textElement lineSpacing="Single"/> 
     <textFieldExpression class="java.lang.Integer"><![CDATA[$V{subReportValue}]]></textFieldExpression> 
</textField> 

은 그룹에 대한 evaluationTime="Report"을 설정합니다. 다른 평가 시간을 이해하려면 EvaluationTimeEnum

주 보고서가 소스가 아닌 .jasper 파일을 참조하기 때문에 완료되면 하위 보고서를 다시 컴파일하십시오.