该文件没有页面。贾斯珀报告 [英] The document has no pages. Jasper Report

查看:110
本文介绍了该文件没有页面。贾斯珀报告的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在搜索此问题的解决方案时遇到问题。运行后我的代码运行正常。它假设将我的sql数据库中的数据显示给我的jtable,并且有一个按钮会触发显示jasper报告,但是有一点点问题,它总是显示消息'文档没有页面。'为什么?有人可以帮我解决我的问题吗?我做错了什么?

I'm having a problem searching for a solution to this issue. My codes works fine after I run it. It suppose to display the data on my sql database to my jtable, and there's a button that will trigger to display the jasper report but there's a little bit problem, it always shows me the message 'The document has no pages.' why is that? can someone help me with my issue here? What did I do wrong?

这是我的代码:

package stringmanipulation;
import java.sql.*;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.view.JasperViewer;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;


public class r2xml extends javax.swing.JFrame {


    public r2xml() {
        initComponents();
    }

Connection con;
    private void search() throws Exception{
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String url = "jdbc:odbc:*****";
            String user = "******";
            String pass = "******";
            Connection con =  DriverManager.getConnection(url, user, pass);
            Statement state = con.createStatement();

            ResultSet rs = state.executeQuery("SELECT "
                    + "pIDNo AS 'Patient ID',"
                    + "pLName AS 'Last Name'," 
                    + "pFName AS 'First Name',"
                    + "pMI AS 'M.I.',"
                    + "pSex AS 'Sex',"
                    + "pStatus AS 'Status',"
                    + "pTelNo AS 'Contact No.',"
                    + "pDocID AS 'Doctor ID',"
                    + "pAddr AS 'St. No.',"
                    + "pStreet AS 'St. Name',"
                    + "pBarangay AS 'Barangay',"
                    + "pCity AS 'City',"
                    + " pProvince AS 'Province',"
                    + " pLNameKIN AS 'Last Name',"
                    + "pFNameKIN AS 'First Name',"
                    + "pMIKIN AS 'M.I.',"
                    + "pRelationKIN AS 'Relation',"
                    + "pTotalDue AS 'Total Due'"
                    + " FROM dbo.Patients");
            ResultSetMetaData rsmetadata = rs.getMetaData();
            int columns = rsmetadata.getColumnCount();
            DefaultTableModel dtm = new DefaultTableModel();
            Vector column_name = new Vector();
            Vector data_rows = new Vector();

            for (int i=1; i<columns;i++){
                column_name.addElement(rsmetadata.getColumnName(i));
            }
            dtm.setColumnIdentifiers(column_name);

            while(rs.next()){
                data_rows = new Vector();
                for (int j=1; j<columns; j++){
                data_rows.addElement(rs.getString(j));
                }
                dtm.addRow(data_rows);
            }
            tblPatient.setModel(dtm);
    }

    public void reportviewer() {


        try{

        String report = "C:\\Users\\cleanfuel\\Documents\\NetBeansProjects\\StringManipulation\\src\\stringmanipulation\\report1.jrxml";
        JasperReport jasp_report = JasperCompileManager.compileReport(report);
        JasperPrint jasp_print = JasperFillManager.fillReport(jasp_report, null, con);
        JasperViewer.viewReport(jasp_print);
        }
        catch (Exception e) {System.out.print(e);}
    }
    @SuppressWarnings("unchecked")




public static void main(String args[]) {
        PatternLayout pl = new PatternLayout("[%-5p] %C.%M:%L: %m%n");
        ConsoleAppender appender = new ConsoleAppender(pl);
        Logger.getRootLogger().addAppender(appender);

        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new r2xml().setVisible(true);
            }
        });
    }

这是XML报告:

<?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="null" language="groovy" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" 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="71"/>
    <style name="Title" forecolor="#FFFFFF" fontName="Times New Roman" fontSize="50" isBold="false" pdfFontName="Times-Bold"/>
    <style name="SubTitle" forecolor="#666666" fontName="Times New Roman" fontSize="18" isBold="false" pdfFontName="Times-Roman"/>
    <style name="Column header" forecolor="#666666" fontName="Times New Roman" fontSize="14" isBold="true" pdfFontName="Times-Roman"/>
    <style name="Detail" mode="Transparent" fontName="Times New Roman" pdfFontName="Times-Roman"/>
    <style name="Row" mode="Transparent" fontName="Times New Roman" pdfFontName="Times-Roman">
        <conditionalStyle>
            <conditionExpression><![CDATA[$V{REPORT_COUNT}%2 == 0]]></conditionExpression>
            <style mode="Opaque" backcolor="#F0EFEF"/>
        </conditionalStyle>
    </style>
    <subDataset name="PieChartDataset"/>
    <queryString language="SQL">
        <![CDATA[SELECT
     Patients."pIDNo" AS Patients_pIDNo,
     Patients."pLName" AS Patients_pLName,
     Patients."pFName" AS Patients_pFName,
     Patients."pMI" AS Patients_pMI,
     Patients."pSex" AS Patients_pSex,
     Patients."pStatus" AS Patients_pStatus,
     Patients."pTelNo" AS Patients_pTelNo,
     Patients."pDocID" AS Patients_pDocID,
     Patients."pAddr" AS Patients_pAddr,
     Patients."pStreet" AS Patients_pStreet,
     Patients."pBarangay" AS Patients_pBarangay,
     Patients."pCity" AS Patients_pCity,
     Patients."pProvince" AS Patients_pProvince,
     Patients."pLNameKIN" AS Patients_pLNameKIN,
     Patients."pFNameKIN" AS Patients_pFNameKIN,
     Patients."pMIKIN" AS Patients_pMIKIN,
     Patients."pRelationKIN" AS Patients_pRelationKIN,
     Patients."pTotalDue" AS Patients_pTotalDue
FROM
     "dbo"."Patients" Patients]]>
    </queryString>
    <field name="Patients_pIDNo" class="java.lang.String"/>
    <field name="Patients_pLName" class="java.lang.String"/>
    <field name="Patients_pFName" class="java.lang.String"/>
    <field name="Patients_pMI" class="java.lang.String"/>
    <field name="Patients_pSex" class="java.lang.String"/>
    <field name="Patients_pStatus" class="java.lang.String"/>
    <field name="Patients_pTelNo" class="java.lang.String"/>
    <field name="Patients_pDocID" class="java.lang.String"/>
    <field name="Patients_pAddr" class="java.lang.String"/>
    <field name="Patients_pStreet" class="java.lang.String"/>
    <field name="Patients_pBarangay" class="java.lang.String"/>
    <field name="Patients_pCity" class="java.lang.String"/>
    <field name="Patients_pProvince" class="java.lang.String"/>
    <field name="Patients_pLNameKIN" class="java.lang.String"/>
    <field name="Patients_pFNameKIN" class="java.lang.String"/>
    <field name="Patients_pMIKIN" class="java.lang.String"/>
    <field name="Patients_pRelationKIN" class="java.lang.String"/>
    <field name="Patients_pTotalDue" class="java.math.BigDecimal"/>
    <group name="Patients_pIDNo">
        <groupExpression><![CDATA[$F{Patients_pIDNo}]]></groupExpression>
        <groupHeader>
            <band height="31">
                <frame>
                    <reportElement mode="Opaque" x="72" y="7" width="730" height="24" forecolor="#B89F7D" backcolor="#70A9C6"/>
                    <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                        <reportElement style="SubTitle" isPrintRepeatedValues="false" x="155" y="1" width="110" height="23" forecolor="#FFFFFF"/>
                        <textElement>
                            <font fontName="Arial" isBold="false" pdfFontName="Helvetica"/>
                        </textElement>
                        <textFieldExpression><![CDATA[$F{Patients_pIDNo}]]></textFieldExpression>
                    </textField>
                </frame>
            </band>
        </groupHeader>
        <groupFooter>
            <band height="6"/>
        </groupFooter>
    </group>
    <background>
        <band height="555" splitType="Stretch">
            <pie3DChart>
                <chart isShowLegend="false" evaluationTime="Report">
                    <reportElement x="-18" y="406" width="229" height="139"/>
                    <chartTitle/>
                    <chartSubtitle/>
                    <chartLegend/>
                </chart>
                <pieDataset>
                    <dataset>
                        <datasetRun subDataset="PieChartDataset">
                            <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(5)]]></dataSourceExpression>
                        </datasetRun>
                    </dataset>
                    <keyExpression><![CDATA[/* Replace with your key expression here */
$V{REPORT_COUNT}]]></keyExpression>
                    <valueExpression><![CDATA[new Double(200*Math.random()*5)]]></valueExpression>
                </pieDataset>
                <pie3DPlot>
                    <plot backgroundAlpha="0.5" foregroundAlpha="0.8">
                        <seriesColor seriesOrder="0" color="#3399FF"/>
                        <seriesColor seriesOrder="1" color="#00CCFF"/>
                        <seriesColor seriesOrder="2" color="#0066CC"/>
                        <seriesColor seriesOrder="3" color="#6699FF"/>
                        <seriesColor seriesOrder="4" color="#004A94"/>
                        <seriesColor seriesOrder="5" color="#00356A"/>
                    </plot>
                    <itemLabel color="#000000" backgroundColor="#FFFFFF"/>
                </pie3DPlot>
            </pie3DChart>
            <image>
                <reportElement x="-20" y="65" width="229" height="250">
                    <printWhenExpression><![CDATA[$V{PAGE_NUMBER} == 1]]></printWhenExpression>
                </reportElement>
                <imageExpression><![CDATA["flower1.png"]]></imageExpression>
            </image>
            <image>
                <reportElement x="-20" y="-20" width="229" height="250">
                    <printWhenExpression><![CDATA[$V{PAGE_NUMBER} > 1]]></printWhenExpression>
                </reportElement>
                <imageExpression><![CDATA["flower1.png"]]></imageExpression>
            </image>
            <staticText>
                <reportElement mode="Opaque" x="318" y="315" width="239" height="181" backcolor="#FFFFCC">
                    <printWhenExpression><![CDATA[Boolean.FALSE]]></printWhenExpression>
                </reportElement>
                <box topPadding="4" leftPadding="4" bottomPadding="4" rightPadding="4">
                    <pen lineWidth="1.0" lineColor="#CC9900"/>
                    <topPen lineWidth="1.0" lineColor="#CC9900"/>
                    <leftPen lineWidth="1.0" lineColor="#CC9900"/>
                    <bottomPen lineWidth="1.0" lineColor="#CC9900"/>
                    <rightPen lineWidth="1.0" lineColor="#CC9900"/>
                </box>
                <textElement>
                    <font size="12"/>
                </textElement>
                <text><![CDATA[Each chart is populated on each page.
The 3 pie charts are currently using an empty datasource and the values are
generated using a random generator.

This rectangle element is not printed (see the print when expression of this
element)]]></text>
            </staticText>
            <line>
                <reportElement x="201" y="431" width="117" height="1">
                    <printWhenExpression><![CDATA[Boolean.FALSE]]></printWhenExpression>
                </reportElement>
                <graphicElement>
                    <pen lineWidth="3.0" lineStyle="Dotted" lineColor="#996600"/>
                </graphicElement>
            </line>
            <staticText>
                <reportElement mode="Opaque" x="275" y="-10" width="240" height="181" backcolor="#FFFFCC">
                    <printWhenExpression><![CDATA[Boolean.FALSE]]></printWhenExpression>
                </reportElement>
                <box topPadding="4" leftPadding="4" bottomPadding="4" rightPadding="4">
                    <pen lineWidth="1.0" lineColor="#CC9900"/>
                    <topPen lineWidth="1.0" lineColor="#CC9900"/>
                    <leftPen lineWidth="1.0" lineColor="#CC9900"/>
                    <bottomPen lineWidth="1.0" lineColor="#CC9900"/>
                    <rightPen lineWidth="1.0" lineColor="#CC9900"/>
                </box>
                <textElement markup="none">
                    <font size="12"/>
                </textElement>
                <text><![CDATA[Flowers

There are two flowers, the first one is printed only starting from the second page, the other one only in the first page.]]></text>
            </staticText>
            <line>
                <reportElement x="72" y="37" width="204" height="1">
                    <printWhenExpression><![CDATA[Boolean.FALSE]]></printWhenExpression>
                </reportElement>
                <graphicElement>
                    <pen lineWidth="3.0" lineStyle="Dotted" lineColor="#996600"/>
                </graphicElement>
            </line>
        </band>
    </background>
    <title>
        <band height="94" splitType="Stretch">
            <staticText>
                <reportElement style="SubTitle" x="336" y="65" width="449" height="29"/>
                <textElement textAlignment="Right">
                    <font size="22" isBold="false"/>
                </textElement>
                <text><![CDATA[Hospital ]]></text>
            </staticText>
            <frame>
                <reportElement mode="Opaque" x="-20" y="0" width="822" height="65" forecolor="#006699" backcolor="#006699"/>
                <staticText>
                    <reportElement style="Title" x="231" y="0" width="578" height="65"/>
                    <textElement textAlignment="Right">
                        <font size="54" isBold="false"/>
                    </textElement>
                    <text><![CDATA[Patient Form]]></text>
                </staticText>
            </frame>
        </band>
    </title>
    <pageHeader>
        <band splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="14" splitType="Stretch">
            <frame>
                <reportElement x="210" y="0" width="575" height="14"/>
                <staticText>
                    <reportElement style="Column header" positionType="Float" x="99" y="0" width="33" height="14" forecolor="#000000"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                    </textElement>
                    <text><![CDATA[Patients_pSex]]></text>
                </staticText>
                <staticText>
                    <reportElement style="Column header" positionType="Float" x="132" y="0" width="33" height="14" forecolor="#000000"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                    </textElement>
                    <text><![CDATA[Patients_pStatus]]></text>
                </staticText>
                <staticText>
                    <reportElement style="Column header" positionType="Float" x="165" y="0" width="33" height="14" forecolor="#000000"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                    </textElement>
                    <text><![CDATA[Patients_pTelNo]]></text>
                </staticText>
                <staticText>
                    <reportElement style="Column header" positionType="Float" x="198" y="0" width="33" height="14" forecolor="#000000"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                    </textElement>
                    <text><![CDATA[Patients_pDocID]]></text>
                </staticText>
                <staticText>
                    <reportElement style="Column header" positionType="Float" x="231" y="0" width="33" height="14" forecolor="#000000"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                    </textElement>
                    <text><![CDATA[Patients_pAddr]]></text>
                </staticText>
                <staticText>
                    <reportElement style="Column header" positionType="Float" x="264" y="0" width="33" height="14" forecolor="#000000"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                    </textElement>
                    <text><![CDATA[Patients_pStreet]]></text>
                </staticText>
                <staticText>
                    <reportElement style="Column header" positionType="Float" x="297" y="0" width="33" height="14" forecolor="#000000"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                    </textElement>
                    <text><![CDATA[Patients_pBarangay]]></text>
                </staticText>
                <staticText>
                    <reportElement style="Column header" positionType="Float" x="330" y="0" width="33" height="14" forecolor="#000000"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                    </textElement>
                    <text><![CDATA[Patients_pCity]]></text>
                </staticText>
                <staticText>
                    <reportElement style="Column header" positionType="Float" x="363" y="0" width="33" height="14" forecolor="#000000"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                    </textElement>
                    <text><![CDATA[Patients_pProvince]]></text>
                </staticText>
                <staticText>
                    <reportElement style="Column header" positionType="Float" x="396" y="0" width="33" height="14" forecolor="#000000"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                    </textElement>
                    <text><![CDATA[Patients_pLNameKIN]]></text>
                </staticText>
                <staticText>
                    <reportElement style="Column header" positionType="Float" x="429" y="0" width="33" height="14" forecolor="#000000"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                    </textElement>
                    <text><![CDATA[Patients_pFNameKIN]]></text>
                </staticText>
                <staticText>
                    <reportElement style="Column header" positionType="Float" x="462" y="0" width="33" height="14" forecolor="#000000"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                    </textElement>
                    <text><![CDATA[Patients_pMIKIN]]></text>
                </staticText>
                <staticText>
                    <reportElement style="Column header" positionType="Float" x="495" y="0" width="33" height="14" forecolor="#000000"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                    </textElement>
                    <text><![CDATA[Patients_pRelationKIN]]></text>
                </staticText>
                <staticText>
                    <reportElement style="Column header" positionType="Float" x="528" y="0" width="33" height="14" forecolor="#000000"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                    </textElement>
                    <text><![CDATA[Patients_pTotalDue]]></text>
                </staticText>
            </frame>
            <staticText>
                <reportElement style="Column header" positionType="Float" x="0" y="0" width="72" height="14" forecolor="#000000"/>
                <textElement>
                    <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                </textElement>
                <text><![CDATA[ Last Name]]></text>
            </staticText>
            <staticText>
                <reportElement style="Column header" positionType="Float" x="72" y="0" width="65" height="14" forecolor="#000000"/>
                <textElement>
                    <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                </textElement>
                <text><![CDATA[First Name]]></text>
            </staticText>
            <staticText>
                <reportElement style="Column header" positionType="Float" x="137" y="0" width="74" height="14" forecolor="#000000"/>
                <textElement>
                    <font fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica"/>
                </textElement>
                <text><![CDATA[Middle Initial]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="15" splitType="Stretch">
            <line>
                <reportElement positionType="FixRelativeToBottom" x="227" y="14" width="575" height="1"/>
            </line>
            <frame>
                <reportElement x="226" y="0" width="575" height="14"/>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="Detail" positionType="Float" x="99" y="0" width="33" height="14"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Patients_pSex}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="Detail" positionType="Float" x="132" y="0" width="33" height="14"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Patients_pStatus}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="Detail" positionType="Float" x="165" y="0" width="33" height="14"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Patients_pTelNo}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="Detail" positionType="Float" x="198" y="0" width="33" height="14"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Patients_pDocID}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="Detail" positionType="Float" x="231" y="0" width="33" height="14"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Patients_pAddr}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="Detail" positionType="Float" x="264" y="0" width="33" height="14"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Patients_pStreet}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="Detail" positionType="Float" x="297" y="0" width="33" height="14"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Patients_pBarangay}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="Detail" positionType="Float" x="330" y="0" width="33" height="14"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Patients_pCity}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="Detail" positionType="Float" x="363" y="0" width="33" height="14"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Patients_pProvince}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="Detail" positionType="Float" x="396" y="0" width="33" height="14"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Patients_pLNameKIN}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="Detail" positionType="Float" x="429" y="0" width="33" height="14"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Patients_pFNameKIN}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="Detail" positionType="Float" x="462" y="0" width="33" height="14"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Patients_pMIKIN}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="Detail" positionType="Float" x="495" y="0" width="33" height="14"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Patients_pRelationKIN}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                    <reportElement style="Detail" positionType="Float" x="528" y="0" width="33" height="14"/>
                    <textElement>
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Patients_pTotalDue}]]></textFieldExpression>
                </textField>
            </frame>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement style="Detail" positionType="Float" x="4" y="0" width="68" height="14"/>
                <textElement>
                    <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{Patients_pLName}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement style="Detail" positionType="Float" x="72" y="1" width="65" height="14"/>
                <textElement>
                    <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{Patients_pFName}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement style="Detail" positionType="Float" x="137" y="1" width="72" height="14"/>
                <textElement>
                    <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{Patients_pMI}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <columnFooter>
        <band height="7" splitType="Stretch">
            <line>
                <reportElement positionType="FixRelativeToBottom" x="0" y="3" width="555" height="1"/>
                <graphicElement>
                    <pen lineWidth="0.5" lineColor="#999999"/>
                </graphicElement>
            </line>
        </band>
    </columnFooter>
    <pageFooter>
        <band height="16" splitType="Stretch">
            <frame>
                <reportElement mode="Opaque" x="2" y="0" width="800" height="16" forecolor="#D0B48E" backcolor="#006699"/>
                <textField evaluationTime="Report">
                    <reportElement style="Column header" x="753" y="0" width="40" height="16" forecolor="#FFFFFF"/>
                    <textElement verticalAlignment="Middle">
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
                </textField>
                <textField>
                    <reportElement style="Column header" x="673" y="0" width="80" height="16" forecolor="#FFFFFF"/>
                    <textElement textAlignment="Right" verticalAlignment="Middle">
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
                </textField>
                <textField pattern="EEEEE dd MMMMM yyyy">
                    <reportElement style="Column header" x="2" y="0" width="197" height="16" forecolor="#FFFFFF"/>
                    <textElement verticalAlignment="Middle">
                        <font fontName="Arial" size="12" isBold="false" pdfFontName="Helvetica"/>
                    </textElement>
                    <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
                </textField>
            </frame>
        </band>
    </pageFooter>
    <summary>
        <band splitType="Stretch"/>
    </summary>
</jasperReport>


推荐答案

首先,资源管理......

Firstly, resource management...

如果可以,您应该只打开与数据库的单个连接。确保在应用程序关闭之前关闭它。连接过程可能很昂贵,所以当你绝对不得不这么做时你真的想要这样做...

You should only open a single connection to the database if you can. Make sure you close it before the application is closed. The connection process can be expensive, so you only really want to do it when you absolutely have to...

一旦完成它们就关闭你的资源。最好通过使用 try-finally 块来实现...

You close your resources once you have finished with them. This is best achieved by using a try-finally block...

private Connection con;

protected void close() throws SQLException {
    if (con != null) {
        con.close();
    }
}

protected Connection getConnection() throws ClassNotFoundException, SQLException {
    if (con == null) {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String url = "jdbc:odbc:*****";
        String user = "******";
        String pass = "******";
        Connection con = DriverManager.getConnection(url, user, pass);
    }
    return con;
}

private void search() throws Exception {

    Statement state = null;
    ResultSet rs = null;

    try {

        state = getConnection().createStatement();

        rs = state.executeQuery("SELECT "
                + "pIDNo AS 'Patient ID',"
                + "pLName AS 'Last Name',"
                + "pFName AS 'First Name',"
                + "pMI AS 'M.I.',"
                + "pSex AS 'Sex',"
                + "pStatus AS 'Status',"
                + "pTelNo AS 'Contact No.',"
                + "pDocID AS 'Doctor ID',"
                + "pAddr AS 'St. No.',"
                + "pStreet AS 'St. Name',"
                + "pBarangay AS 'Barangay',"
                + "pCity AS 'City',"
                + " pProvince AS 'Province',"
                + " pLNameKIN AS 'Last Name',"
                + "pFNameKIN AS 'First Name',"
                + "pMIKIN AS 'M.I.',"
                + "pRelationKIN AS 'Relation',"
                + "pTotalDue AS 'Total Due'"
                + " FROM dbo.Patients");
        ResultSetMetaData rsmetadata = rs.getMetaData();
        int columns = rsmetadata.getColumnCount();

        DefaultTableModel dtm = new DefaultTableModel();
        Vector column_name = new Vector();
        Vector data_rows = new Vector();

        for (int i = 1; i < columns; i++) {
            column_name.addElement(rsmetadata.getColumnName(i));
        }
        dtm.setColumnIdentifiers(column_name);

        while (rs.next()) {
            data_rows = new Vector();
            for (int j = 1; j < columns; j++) {
                data_rows.addElement(rs.getString(j));
            }
            dtm.addRow(data_rows);
        }
        tblPatient.setModel(dtm);

    } finally {
        try {
            rs.close();
        } catch (Exception e) {
        }
        try {
            state.close();
        } catch (Exception e) {
        }
    }
}

现在问题就在眼前......

Now to the problem at hand...

看来你已经创建了两个对 con 。一个作为类字段,一个作为方法变量(在搜索中)。

It appears you have create two references to con. One as class field and one as a method variable (in search).

然后传递 con 到Jasper Reports,我怀疑是 null 。相反,您应该使用上面列出的 getConnection()

You are then passing con to Jasper Reports, which I suspect is null. Instead you should use the getConnection() as outlined above.

public void reportviewer() {
    try{
        String report = "C:\\Users\\cleanfuel\\Documents\\NetBeansProjects\\StringManipulation\\src\\stringmanipulation\\report1.jrxml";
        JasperReport jasp_report = JasperCompileManager.compileReport(report);
        JasperPrint jasp_print = JasperFillManager.fillReport(jasp_report, null, getConnection());
        JasperViewer.viewReport(jasp_print);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

已更新后台工作人员...

报告可能需要一些时间来编译和填写。 You should off load this work to a background thread so it doesn’t interfere with your UI (or make it look like you application as hung).

A report can take some time to compile and fill. You should off load this work to a background thread so it doesn't interfere with your UI (or make it look like you application as hung).

The simplest solution would be to use a SwingWorker. It has functionality to resync the threads with the UI

The simplest solution would be to use a SwingWorker. It has functionality to resync the threads with the UI

public void reportviewer() {
    // Disable any UI components you don't want the user using while
    // the report generates...
    new ReportWorker().execute();
}

public class ReportWorker extends SwingWorker<JasperPrint, Void> {

    @Override
    protected JasperPrint doInBackground() throws Exception {
        String report = "C:\\Users\\cleanfuel\\Documents\\NetBeansProjects\\StringManipulation\\src\\stringmanipulation\\report1.jrxml";
        JasperReport jasp_report = JasperCompileManager.compileReport(report);
        JasperPrint jasp_print = JasperFillManager.fillReport(jasp_report, null, getConnection());
        return jasp_print;
    }

    @Override
    protected void done() {
        try {
            JasperPrint jasp_print = get();
            JasperViewer.viewReport(jasp_print);
        } catch (Exception exp) {
            exp.printStackTrace();
        }
        // Renable any UI components you disabled before the report run
    }
}

Take a look at Concurrency in Swing for more details.

Take a look at Concurrency in Swing for more details.

Hints

If you can pre-compile the report and load it (rather the loading the XML), it will make the report process quicker.

If you can pre-compile the report and load it (rather the loading the XML), it will make the report process quicker.

这篇关于该文件没有页面。贾斯珀报告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆