【问题标题】:Error passing multiple parameters in jasper ireport在 jasper ireport 中传递多个参数时出错
【发布时间】:2018-01-05 08:58:53
【问题描述】:
<?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="555" pageHeight="802" columnWidth="535" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="4532cff6-e5b8-4edf-9ab5-46106eff9c86">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <style name="Title" fontName="Times New Roman" fontSize="50" isBold="true" pdfFontName="Times-Bold"/>
    <style name="SubTitle" forecolor="#736343" fontName="Arial" fontSize="18"/>
    <style name="Column header" forecolor="#666666" fontName="Arial" fontSize="12" isBold="true"/>
    <style name="Detail" fontName="Arial" fontSize="12"/>
    <style name="Row" mode="Transparent">
        <conditionalStyle>
            <conditionExpression><![CDATA[$V{REPORT_COUNT}%2 == 0]]></conditionExpression>
            <style backcolor="#E6DAC3"/>
        </conditionalStyle>
    </style>
    <parameter name="START_DATE_MAIN" class="java.lang.String"/>
    <parameter name="END_DATE_MAIN" class="java.lang.String"/>
    <parameter name="HOSPITAL_NAME_MAIN" class="java.lang.String"/>
    <parameter name="BRANCH_NAME_MAIN" class="java.lang.String"/>
    <parameter name="START_DATE" class="java.util.Date" isForPrompting="false">
        <defaultValueExpression><![CDATA[(new SimpleDateFormat("dd.MM.yyyy")).parse($P{START_DATE_MAIN})]]></defaultValueExpression>
    </parameter>
    <parameter name="END_DATE" class="java.util.Date" isForPrompting="false">
        <defaultValueExpression><![CDATA[(new SimpleDateFormat("dd.MM.yyyy")).parse($P{END_DATE_MAIN})]]></defaultValueExpression>
    </parameter>
    <parameter name="HOSPITAL_NAME_SUB" class="java.lang.String" isForPrompting="false">
        <defaultValueExpression><![CDATA[$P{HOSPITAL_NAME_MAIN}]]></defaultValueExpression>
    </parameter>
    <parameter name="BRANCH_NAME_SUB" class="java.lang.String" isForPrompting="false">
        <defaultValueExpression><![CDATA[$P{BRANCH_NAME_MAIN}]]></defaultValueExpression>
    </parameter>
    <queryString>
        <![CDATA[SELECT DISTINCT wet.wkf_ebp_document_serial, wet.document_title, wet.document_name, sb.branch_name
FROM wkf_ebp_table wet
  INNER JOIN wkf_ebp_registry_files werf ON werf.wkf_ebp_document_serial = wet.wkf_ebp_document_serial
  INNER JOIN system_branches sb ON wet.system_branch_serial = sb.system_branch_serial
WHERE wet.wkf_ebp_document_serial = 54
ORDER BY wet.wkf_ebp_document_serial]]>
    </queryString>
    <field name="wkf_ebp_document_serial" class="java.lang.Integer"/>
    <field name="document_title" class="java.lang.String"/>
    <field name="document_name" class="java.lang.String"/>
    <field name="branch_name" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="57">
            <subreport>
                <reportElement x="0" y="0" width="555" height="50" uuid="44cb07e6-92a3-4d07-ad6b-0cdb29bcfca2"/>
                <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                <subreportExpression><![CDATA["Z:\\NGenXEHMISReports\\src\\com\\ngenx\\universals\\NhifHeader\\PortraitNhifHeader.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </title>
    <columnHeader>
        <band height="53">
            <subreport>
                <reportElement x="0" y="0" width="555" height="50" uuid="9e9faae4-5f9b-4be8-b2de-dbe88eeb064e"/>
                <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                <subreportExpression><![CDATA["Z:\\NGenXEHMISReports\\src\\com\\ngenx\\EHMIS\\Reports\\BpmBatchClaimsListClaimsAndRegFiles\\BpmBatchClaimsListClaimsAndRegFilesTitle.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </columnHeader>
    <detail>
        <band height="84">
            <subreport>
                <reportElement x="0" y="0" width="555" height="81" uuid="72299e64-b064-45c9-be5c-230178ebbdb2"/>
                <subreportParameter name="END_DATE_MAIN">
                    <subreportParameterExpression><![CDATA[$P{END_DATE_MAIN}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="BRANCH_NAME_MAIN">
                    <subreportParameterExpression><![CDATA[$P{BRANCH_NAME_MAIN}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="HOSPITAL_NAME_SUB">
                    <subreportParameterExpression><![CDATA[$P{HOSPITAL_NAME_SUB}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="HOSPITAL_NAME_MAIN">
                    <subreportParameterExpression><![CDATA[$P{HOSPITAL_NAME_MAIN}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="END_DATE">
                    <subreportParameterExpression><![CDATA[$P{END_DATE}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="START_DATE">
                    <subreportParameterExpression><![CDATA[$P{START_DATE}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="START_DATE_MAIN">
                    <subreportParameterExpression><![CDATA[$P{START_DATE_MAIN}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="BRANCH_NAME_SUB">
                    <subreportParameterExpression><![CDATA[$P{BRANCH_NAME_SUB}]]></subreportParameterExpression>
                </subreportParameter>
                <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                <subreportExpression><![CDATA["Z:\\NGenXEHMISReports\\src\\com\\ngenx\\EHMIS\\Reports\\BpmBatchClaimsListClaimsAndRegFiles\\BpmBatchClaimsListClaimsAndRegFilesBatchList.jasper"]]></subreportExpression>
            </subreport>
        </band>
        <band height="97"/>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch">
            <line>
                <reportElement positionType="FixRelativeToBottom" x="0" y="3" width="555" height="1" uuid="f5f84792-ead7-447c-8611-c102cb7bcdca"/>
                <graphicElement>
                    <pen lineWidth="0.5" lineColor="#999999"/>
                </graphicElement>
            </line>
        </band>
    </columnFooter>
    <pageFooter>
        <band height="25" splitType="Stretch">
            <frame>
                <reportElement mode="Opaque" x="-21" y="1" width="597" height="24" forecolor="#D0B48E" backcolor="#F2EBDF" uuid="7c8434c0-a6d0-40be-b9f6-a8fe03160e43"/>
                <textField evaluationTime="Report">
                    <reportElement style="Column header" x="533" y="0" width="40" height="20" forecolor="#736343" uuid="546e557a-42eb-43e0-bc8c-00331c199a50"/>
                    <textElement verticalAlignment="Middle">
                        <font size="10" isBold="false"/>
                    </textElement>
                    <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
                </textField>
                <textField>
                    <reportElement style="Column header" x="453" y="0" width="80" height="20" forecolor="#736343" uuid="db70de02-3ac8-4cf4-bfbd-88442962408b"/>
                    <textElement textAlignment="Right" verticalAlignment="Middle">
                        <font size="10" isBold="false"/>
                    </textElement>
                    <textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
                </textField>
                <textField pattern="EEEEE dd MMMMM yyyy">
                    <reportElement style="Column header" x="22" y="1" width="197" height="20" forecolor="#736343" uuid="53a03810-2c65-4292-849b-38e3cd343cc6"/>
                    <textElement verticalAlignment="Middle">
                        <font size="10" isBold="false"/>
                    </textElement>
                    <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
                </textField>
            </frame>
        </band>
    </pageFooter>
</jasperReport>

当我为上述 jasper ireport 传递四个参数时,出现以下错误(错误填充打印)。 SQL 查询本身正在工作,但是当我在 netbeans IDE 上运行报告时没有显示任何数据。在我添加医院和分支机构参数之前它正在工作。当时我只有两个参数开始日期和结束日期。有谁能发现问题吗?

错误填充打印... net.sf.jasperreports.engine.JRException:错误准备语句以执行报告查询: SELECT DISTINCT wet.wkf_ebp_document_serial,Count(werf.wkf_ebp_registry_file_serial) AS reg, sb.branch_name, ncb.batch_title, ncb.nhif_claims_batch_serial, Count(ncbn.nhif_claims_notification_serial) AS claimsnotificationcount, ncb.total_applied_amount、ncb.total_approved_amount、ncb.total_bill_amount、nhif_hospitals.hospital_name、wet.document_name、ncb.batch_from_date、ncb.batch_to_date、nhif_claims_notifications.date_added FROM wkf_ebp_table 湿 INNER JOIN wkf_ebp_registry_files werf ON werf.wkf_ebp_document_serial = wet.wkf_ebp_document_serial INNER JOIN system_branches sb ON wet.system_branch_serial = sb.system_branch_serial INNER JOIN nhif_claims_batches ncb ON ncb.nhif_claims_batch_serial = wet.nhif_claims_batch_serial 内部连接 ​​nhif_claims_batch_notifications ncbn 开启 ncbn.nhif_claims_batch_serial = ncb.nhif_claims_batch_serial INNER JOIN nhif_hospitals ON nhif_hospitals.system_branch_serial = sb.system_branch_serial AND ncb.nhif_hospital_serial = nhif_hospitals.nhif_hospital_serial 内部加入 nhif_claims_notifications 开启 ncbn.nhif_claims_notification_serial = nhif_claims_notifications.nhif_claims_notification_serial 在哪里(nhif_claims_notifications.date_added BETWEEN ? AND ? AND nhif_hospitals.hospital_name LIKE '%?%') 或 (sb.branch_name LIKE '%?%') GROUP BY wet.wkf_ebp_document_serial、sb.branch_name、ncb.batch_title、ncb.nhif_claims_batch_serial、 ncb.total_applied_amount、ncb.total_approved_amount、ncb.total_bill_amount、nhif_hospitals.hospital_name、wet.document_name、ncb.batch_from_date、ncb.batch_to_date、nhif_claims_notifications.date_added 订购方式:wet.wkf_ebp_document_serial
net.sf.jasperreports.engine.JRRuntimeException:net.sf.jasperreports.engine.JRException:为执行报告查询准备语句时出错: SELECT DISTINCT wet.wkf_ebp_document_serial,Count(werf.wkf_ebp_registry_file_serial) AS reg, sb.branch_name, ncb.batch_title, ncb.nhif_claims_batch_serial, Count(ncbn.nhif_claims_notification_serial) AS claimsnotificationcount, ncb.total_applied_amount、ncb.total_approved_amount、ncb.total_bill_amount、nhif_hospitals.hospital_name、wet.document_name、ncb.batch_from_date、ncb.batch_to_date、nhif_claims_notifications.date_added FROM wkf_ebp_table 湿 INNER JOIN wkf_ebp_registry_files werf ON werf.wkf_ebp_document_serial = wet.wkf_ebp_document_serial INNER JOIN system_branches sb ON wet.system_branch_serial = sb.system_branch_serial INNER JOIN nhif_claims_batches ncb ON ncb.nhif_claims_batch_serial = wet.nhif_claims_batch_serial 内部连接 ​​nhif_claims_batch_notifications ncbn 开启 ncbn.nhif_claims_batch_serial = ncb.nhif_claims_batch_serial INNER JOIN nhif_hospitals ON nhif_hospitals.system_branch_serial = sb.system_branch_serial AND ncb.nhif_hospital_serial = nhif_hospitals.nhif_hospital_serial 内部加入 nhif_claims_notifications 开启 ncbn.nhif_claims_notification_serial = nhif_claims_notifications.nhif_claims_notification_serial 在哪里(nhif_claims_notifications.date_added BETWEEN ? AND ? AND nhif_hospitals.hospital_name LIKE '%?%') 或 (sb.branch_name LIKE '%?%') GROUP BY wet.wkf_ebp_document_serial、sb.branch_name、ncb.batch_title、ncb.nhif_claims_batch_serial、 ncb.total_applied_amount、ncb.total_approved_amount、ncb.total_bill_amount、nhif_hospitals.hospital_name、wet.document_name、ncb.batch_from_date、ncb.batch_to_date、nhif_claims_notifications.date_added 订购方式:wet.wkf_ebp_document_serial 在 net.sf.jasperreports.engine.fill.JRFillSubreport.prepare(JRFillSubreport.java:782) 在 net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:331) 在 net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:384) 在 net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:358) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2059) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:778) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:288) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151) 在 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:932) 在 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845) 在 net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:87) 在 net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446) 在 net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:276) 在 net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:745) 在 com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:891) 在 org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1443) 在 org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:68) 在 org.openide.util.lookup.Lookups.executeWith(Lookups.java:303)     在 org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2058) 原因:net.sf.jasperreports.engine.JRException:为执行报告查询准备语句时出错: SELECT DISTINCT wet.wkf_ebp_document_serial,Count(werf.wkf_ebp_registry_file_serial) AS reg, sb.branch_name, ncb.batch_title, ncb.nhif_claims_batch_serial, Count(ncbn.nhif_claims_notification_serial) AS claimsnotificationcount, ncb.total_applied_amount、ncb.total_approved_amount、ncb.total_bill_amount、nhif_hospitals.hospital_name、wet.document_name、ncb.batch_from_date、ncb.batch_to_date、nhif_claims_notifications.date_added FROM wkf_ebp_table 湿 INNER JOIN wkf_ebp_registry_files werf ON werf.wkf_ebp_document_serial = wet.wkf_ebp_document_serial INNER JOIN system_branches sb ON wet.system_branch_serial = sb.system_branch_serial INNER JOIN nhif_claims_batches ncb ON ncb.nhif_claims_batch_serial = wet.nhif_claims_batch_serial 内部连接 ​​nhif_claims_batch_notifications ncbn 开启 ncbn.nhif_claims_batch_serial = ncb.nhif_claims_batch_serial INNER JOIN nhif_hospitals ON nhif_hospitals.system_branch_serial = sb.system_branch_serial AND ncb.nhif_hospital_serial = nhif_hospitals.nhif_hospital_serial 内部加入 nhif_claims_notifications 开启 ncbn.nhif_claims_notification_serial = nhif_claims_notifications.nhif_claims_notification_serial 在哪里(nhif_claims_notifications.date_added BETWEEN ? AND ? AND nhif_hospitals.hospital_name LIKE '%?%') 或 (sb.branch_name LIKE '%?%') GROUP BY wet.wkf_ebp_document_serial、sb.branch_name、ncb.batch_title、ncb.nhif_claims_batch_serial、 ncb.total_applied_amount、ncb.total_approved_amount、ncb.total_bill_amount、nhif_hospitals.hospital_name、wet.document_name、ncb.batch_from_date、ncb.batch_to_date、nhif_claims_notifications.date_added 订购方式:wet.wkf_ebp_document_serial 在 net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:372) 在 net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:196) 在 net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1112) 在 net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:689) 在 net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1281) 在 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:900) 在 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845) 在 net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:651) 在 net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59) 在 net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:203) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748) 引起:org.postgresql.util.PSQLException:列索引超出范围:3,列数:2。 在 org.postgresql.core.v3.SimpleParameterList.bind(SimpleParameterList.java:64) 在 org.postgresql.core.v3.SimpleParameterList.setStringParameter(SimpleParameterList.java:127) 在 org.postgresql.jdbc.PgPreparedStatement.bindString(PgPreparedStatement.java:1110) 在 org.postgresql.jdbc.PgPreparedStatement.setString(PgPreparedStatement.java:381) 在 org.postgresql.jdbc.PgPreparedStatement.setString(PgPreparedStatement.java:365) 在 net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.setStatementParameter(JRJdbcQueryExecuter.java:564) 在 net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.setStatementParameter(JRJdbcQueryExecuter.java:399) 在 net.sf.jasperreports.engine.query.JRJdbcQueryExecuter$1.visit(JRJdbcQueryExecuter.java:332) 在 net.sf.jasperreports.engine.query.JRAbstractQueryExecuter$QueryParameter.accept(JRAbstractQueryExecuter.java:157) 在 net.sf.jasperreports.engine.query.JRAbstractQueryExecuter.visitQueryParameters(JRAbstractQueryExecuter.java:646) 在 net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:317) ... 12 更多打印未填写。尝试使用 EmptyDataSource...

【问题讨论】:

    标签: parameters jasper-reports


    【解决方案1】:

    问题出在我添加的字符串参数上!在 $ 和 P 之间,例如 '%$P!{BRANCH_NAME_SUB}%'

    SELECT DISTINCT wet.wkf_ebp_document_serial, Count(werf.wkf_ebp_registry_file_serial) AS reg, sb.branch_name,
      ncb.batch_title, ncb.nhif_claims_batch_serial, Count(ncbn.nhif_claims_notification_serial) AS claimsnotificationcount,
      ncb.total_applied_amount, ncb.total_approved_amount, ncb.total_bill_amount, nhif_hospitals.hospital_name,
      wet.document_name, ncb.batch_from_date, ncb.batch_to_date, nhif_claims_notifications.date_added
    FROM wkf_ebp_table wet
      INNER JOIN wkf_ebp_registry_files werf ON werf.wkf_ebp_document_serial = wet.wkf_ebp_document_serial
      INNER JOIN system_branches sb ON wet.system_branch_serial = sb.system_branch_serial
      INNER JOIN nhif_claims_batches ncb ON ncb.nhif_claims_batch_serial = wet.nhif_claims_batch_serial
      INNER JOIN nhif_claims_batch_notifications ncbn ON ncbn.nhif_claims_batch_serial = ncb.nhif_claims_batch_serial
      INNER JOIN nhif_hospitals ON nhif_hospitals.system_branch_serial = sb.system_branch_serial AND
        ncb.nhif_hospital_serial = nhif_hospitals.nhif_hospital_serial
      INNER JOIN nhif_claims_notifications ON
        ncbn.nhif_claims_notification_serial = nhif_claims_notifications.nhif_claims_notification_serial
    WHERE (nhif_claims_notifications.date_added BETWEEN $P{START_DATE} AND $P{END_DATE} AND nhif_hospitals.hospital_name LIKE
      '%$P!{HOSPITAL_NAME_SUB}%') OR (sb.branch_name LIKE '%$P!{BRANCH_NAME_SUB}%')
    GROUP BY wet.wkf_ebp_document_serial, sb.branch_name, ncb.batch_title, ncb.nhif_claims_batch_serial,
      ncb.total_applied_amount, ncb.total_approved_amount, ncb.total_bill_amount, nhif_hospitals.hospital_name,
      wet.document_name, ncb.batch_from_date, ncb.batch_to_date, nhif_claims_notifications.date_added
    ORDER BY wet.wkf_ebp_document_serial
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 2012-10-12
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2013-12-06
      相关资源
      最近更新 更多