为什么在Jasper Reports中创建空报告

时间:2011-08-13 06:08:15

标签: jasper-reports ireport

我是Jasper Reports的新手,cpuld任何人请告诉我为什么在数据库中重新发送数据时会创建一个空的报告

请看这是我的程序

public class ReportDriver {

    /**
     * Constructor for ReportDriver
     */
    public ReportDriver() {
    }

    public static void main(String args[]) {
        Connection con = null;
        try {

            Class.forName("oracle.jdbc.driver.OracleDriver");

            con = DriverManager.getConnection(
                    "jdbc:oracle:thin:@localhost:1521:orcle", "scott", "tiger");

            JasperDesign jasperDesign = JRXmlLoader
                    .load("C:\\Documents and Settings\\Admin\\report5.jrxml");

            JasperReport jasperReport = JasperCompileManager
                    .compileReport(jasperDesign);

            JasperPrint jasperPrint = JasperFillManager.fillReport(
                    jasperReport, null, con);
            JasperViewer.viewReport(jasperPrint);
        } catch (Exception ex) {
            ex.printStackTrace();
            String connectMsg = "Could not create the report ";
            System.out.println(connectMsg);
        }
    }

}
This is my jrxml file 

<?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="report5" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <queryString language="SQL">
        <![CDATA[select EMPNO , ENAME ,  JOB from emp]]>
    </queryString>
    <field name="EMPNO" class="java.math.BigDecimal"/>
    <field name="ENAME" class="java.lang.String"/>
    <field name="JOB" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch"/>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="61" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="125" splitType="Stretch"/>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>

1 个答案:

答案 0 :(得分:2)

您的报告是空的,因为它应该是这样的:您的jrxml不包含任何要显示的元素。尝试以下jrxml并查看差异:

<?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="report5" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <queryString language="SQL">
        <![CDATA[select EMPNO , ENAME ,  JOB from emp]]>
    </queryString>
    <field name="EMPNO" class="java.math.BigDecimal"/>
    <field name="ENAME" class="java.lang.String"/>
    <field name="JOB" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch"/>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="61" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="125" splitType="Stretch">
            <textField>
                <reportElement x="0" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression class="java.lang.String"><![CDATA[$F{EMPNO}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="0" y="20" width="100" height="20"/>
                <textElement/>
                <textFieldExpression class="java.lang.String"><![CDATA[$F{ENAME}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="0" y="40" width="100" height="20"/>
                <textElement/>
                <textFieldExpression class="java.lang.String"><![CDATA[$F{JOB}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>