Ireport / Jasperreports中的参数

问题描述 投票:1回答:2

我正在使用名为runjasper.jar的工具来填充JRXML文件。在该文件中,我有一个名为querywhere的参数。该字符串将通过$P!{querywhere}附加到Connection SQL(MySQL DB),但是我通过使用一些字符遇到了一些问题。例如:"'(等。

我在NetBeans中打开了Java文件进行调试。在该行:

JasperPrint print = JasperFillManager.fillReport(report, parameters, conn);

Parameters是一个字符串,名称为querywhere等于:

WHERE my_company_id ='12345'

(从NetBeans调试器复制)可以。

如果我打印Reportvariable

$P{querywhere} 

在报告中,我将有这样一行:

WHERE m5_pdc.m5_company_id =\'12010901\'

如果我将\所转义的参数设置为

WHERE my_company_id =\'12345\'

$P{querywhere}参数是:

WHERE my_company_id =\\'12345\\'

所以:简短的问题,我该如何传送像这样的字符串:

WHERE my_company_id ='12345' 

到报告。

[任何想法如何转移"'这样的字符?在这种情况下,转义字符\似乎无效。

谢谢您和最诚挚的问候

基督徒

jasper-reports ireport
2个回答
3
投票

您可以使用这样的表达式:jrxml文件中的[SELECT .. FROM .. WHERE strAttr=$P{strFilter}

报告模板的片段(jrxml文件):

<parameter name="strFilter" class="java.lang.String"/>
<queryString>
    <![CDATA[SELECT city FROM address WHERE city=$P{strFilter}]]>
</queryString>
<field name="city" class="java.lang.String"/>

此代码适用于带有单引号,双引号和括号符号的字符串:

Map<String, Object> params = new HashMap<String, Object>();
JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
//params.put("strFilter", "Berl)in");
//params.put("strFilter", "Muni\"ch");
params.put("strFilter", "Stuttga'rt");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection);

JasperExportManager.exportReportToPdfFile(jasperPrint, pdfFileName);

或者您可以使用如下表达式:[SELECT .. FROM .. WHERE $P!{whereClause}

报告模板的片段(jrxml文件):

<parameter name="strFilter" class="java.lang.String"/>
<parameter name="whereClause" class="java.lang.String"/>
<queryString>
    <![CDATA[SELECT city FROM address WHERE city=$P{strFilter} $P!{whereClause}]]>
</queryString>

此代码适用于带有单引号,双引号和括号符号的字符串:

Map<String, Object> params = new HashMap<String, Object>();
JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
//params.put("strFilter", "Berl)in");
//params.put("whereClause", "AND city = 'Berl)in'");
//params.put("strFilter", "Muni\"ch");
//params.put("whereClause", "AND city = 'Muni\"ch'");
params.put("strFilter", "Stuttga'rt");
params.put("whereClause", "AND city = 'Stuttga''rt'");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection);

JasperExportManager.exportReportToPdfFile(jasperPrint, pdfFileName);

0
投票

您可以在hasmap中传递参数时将变量作为字符串,在ireport中创建参数并在属性中将其声明为字符串。您在哈希映射参数中设置的字符串值将替换为该字符串值。

© www.soinside.com 2019 - 2024. All rights reserved.