2011-10-31 3 views
1

빈 하위 보고서에 대한 질문이 많이 있지만 필요한 정보를 제공하지 못했습니다.Jasper 보고서의 빈 하위 보고서

<?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="sample_report" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> 
<property name="ireport.zoom" value="1.0"/> 
<property name="ireport.x" value="0"/> 
<property name="ireport.y" value="0"/> 
<parameter name="reportTitle" class="java.lang.String"/> 
<parameter name="reportSubTitle" class="java.lang.String"/> 
<background> 
    <band splitType="Stretch"/> 
</background> 
<title> 
    <band height="65" splitType="Stretch"> 
     <textField> 
      <reportElement x="0" y="0" width="555" height="20"/> 
      <textElement textAlignment="Center"/> 
      <textFieldExpression><![CDATA[$P{reportTitle}]]></textFieldExpression> 
     </textField> 
     <textField> 
      <reportElement x="434" y="40" width="80" height="20"/> 
      <textElement textAlignment="Right"/> 
      <textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression> 
     </textField> 
     <textField evaluationTime="Report"> 
      <reportElement x="514" y="40" width="40" height="20"/> 
      <textElement/> 
      <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression> 
     </textField> 
     <textField> 
      <reportElement x="0" y="20" width="555" height="20"/> 
      <textElement textAlignment="Center"/> 
      <textFieldExpression><![CDATA[$P{reportSubTitle}]]></textFieldExpression> 
     </textField> 
    </band> 
</title> 
<pageHeader> 
    <band splitType="Stretch"/> 
</pageHeader> 
<columnHeader> 
    <band splitType="Stretch"/> 
</columnHeader> 
<detail> 
    <band height="109" splitType="Stretch"> 
     <subreport isUsingCache="false"> 
      <reportElement x="0" y="0" width="555" height="100" isPrintWhenDetailOverflows="true"/> 
      <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
      <subreportExpression><![CDATA["sample_report_activity_report.jasper"]]></subreportExpression> 
     </subreport> 
    </band> 
</detail> 
<columnFooter> 
    <band splitType="Stretch"/> 
</columnFooter> 
<pageFooter> 
    <band splitType="Stretch"/> 
</pageFooter> 
<summary> 
    <band 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="sample_report_activity_report" pageWidth="802" pageHeight="555" orientation="Landscape" whenNoDataType="AllSectionsNoDetail" columnWidth="802" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0"> 
<property name="ireport.zoom" value="1.0"/> 
<property name="ireport.x" value="0"/> 
<property name="ireport.y" value="0"/> 
<queryString language="SQL"> 
    <![CDATA[SELECT ActivityType, Count, Amount, ActivityDate FROM Activity WHERE ARIID = 1]]> 
</queryString> 
<field name="ActivityType" class="java.lang.String"/> 
<field name="Count" class="java.lang.String"/> 
<field name="Amount" class="java.lang.String"/> 
<field name="ActivityDate" class="java.lang.String"/> 
<background> 
    <band splitType="Stretch"/> 
</background> 
<title> 
    <band height="24" splitType="Stretch"> 
     <staticText> 
      <reportElement x="0" y="0" width="802" height="20"/> 
      <textElement textAlignment="Center"/> 
      <text><![CDATA[Activity Report]]></text> 
     </staticText> 
    </band> 
</title> 
<pageHeader> 
    <band splitType="Stretch"/> 
</pageHeader> 
<columnHeader> 
    <band height="25" splitType="Stretch"> 
     <staticText> 
      <reportElement x="12" y="0" width="100" height="20"/> 
      <textElement/> 
      <text><![CDATA[ActivityType]]></text> 
     </staticText> 
     <staticText> 
      <reportElement x="112" y="0" width="100" height="20"/> 
      <textElement/> 
      <text><![CDATA[Count]]></text> 
     </staticText> 
     <staticText> 
      <reportElement x="215" y="0" width="100" height="20"/> 
      <textElement/> 
      <text><![CDATA[Amount]]></text> 
     </staticText> 
     <staticText> 
      <reportElement x="315" y="0" width="100" height="20"/> 
      <textElement/> 
      <text><![CDATA[ActivityDate]]></text> 
     </staticText> 
    </band> 
</columnHeader> 
<detail> 
    <band height="22" splitType="Stretch"> 
     <textField> 
      <reportElement x="12" y="0" width="100" height="20"/> 
      <textElement/> 
      <textFieldExpression><![CDATA[$F{ActivityType}]]></textFieldExpression> 
     </textField> 
     <textField> 
      <reportElement x="115" y="0" width="100" height="20"/> 
      <textElement/> 
      <textFieldExpression><![CDATA[$F{Count}]]></textFieldExpression> 
     </textField> 
     <textField> 
      <reportElement x="215" y="0" width="100" height="20"/> 
      <textElement/> 
      <textFieldExpression><![CDATA[$F{Amount}]]></textFieldExpression> 
     </textField> 
     <textField> 
      <reportElement x="315" y="2" width="100" height="20"/> 
      <textElement/> 
      <textFieldExpression><![CDATA[$F{ActivityDate}]]></textFieldExpression> 
     </textField> 
    </band> 
</detail> 
<columnFooter> 
    <band splitType="Stretch"/> 
</columnFooter> 
<pageFooter> 
    <band splitType="Stretch"/> 
</pageFooter> 
<summary> 
    <band height="42" splitType="Stretch"> 
     <staticText> 
      <reportElement x="0" y="0" width="802" height="20"/> 
      <textElement textAlignment="Center"/> 
      <text><![CDATA[--- End of Activity Report ---]]></text> 
     </staticText> 
    </band> 
</summary> 
</jasperReport> 

을 그리고 난 다음 Java 코드가 : 내가 따랐다 말할 수있는 지금까지

Map parameters = new HashMap(); 
parameters.put("reportTitle", "Report"); 
parameters.put("reportSubTitle", "Activity Date 10/25/2011"); 

JasperReport jasperReportMain = JasperCompileManager.compileReport("c:\\tempfilepath\\sample_report.jrxml"); 

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReportMain, parameters, con); 
JasperExportManager.exportReportToPdfFile(jasperPrint, "c:\\tempfilepath\\SampleReport.pdf"); 

을 모든 이전의 조언이 주어졌으며 메인 보고서를 실행할 때 하위 보고서에 데이터가 표시되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

아래의 설명에서 하위 보고서가 자체적으로 확인을 실행한다고 말합니다. 하지만 하위 보고서가 포함 된 주 보고서가 iReport에서 정상적으로 작동하는지 여부는 밝히지 않았습니다. 그거야? 시작하여 Java 코드를 찾아보십시오. – mdahlman

답변

0

XML JR 코드에서 어떤 불규칙도 발견하지 못했습니다. 먼저 데이터 소스 (데이터베이스 결과 집합)가 결과를 반환하고 올바르게 설정 되었습니까?

Jasper Reports 용 IREPORT Designer 도구를 설치하는 것이 좋습니다. 나는 최신 버전이 4.1.2라고 생각한다. 이것은 설계 및 오류/예외 처리 모두에서 대단히 도움이 될 것입니다.

+0

iReport를 사용하여 jrxml 파일을 만들었습니다. 또한 하위 보고서를 자체에 인쇄하면 데이터가 표시되므로 데이터 소스가 올바른 결과를 반환하고 있다고 확신합니다. –

+2

DataSource 식 특성과 하위 보고서의 "연결 유형"특성을 확인할 수 있습니다. 그것들은 주 보고서의 JR 템플리트 (iReport에서)에서 조작되어야합니다. 또한 하위 보고서의 데이터가 표시되지 않는 주된 이유 중 하나는 해당 하위 보고서의 데이터 원본이 주 보고서에서 구성되는 방식입니다. – Mechkov

4

하위 보고서의 쿼리가 행을 반환하지 않을 수 있습니다. 포함 된 보고서에 No Data 밴드를 추가하고 그 중 일부를 Static Text에 넣고 (하위) 보고서 속성 When No DataNo Data Section으로 설정할 수 있습니다.

0

나는 항상 iReport를 사용하여 보고서를 개발했기 때문에 많은 jrxml을 코드로 이해하지 못하기 때문에 잘못되었을 수 있습니다. 기본 보고서에서 하위 보고서로 매개 변수를 전달하고 있습니까? 그렇다면 포함 된 보고서의 매개 변수를 전달했는지 여부를 나타내는 하위 보고서를 마우스 오른쪽 단추로 클릭하여 확인합니다.

관련 문제