Ireport / Jasperreports中的参数

时间:2012-01-23 09:34:12

标签: jasper-reports ireport

我使用名为“runjasper.jar”的工具来填充jxrml文件。 在那个文件中,我有一个名为“querywhere”的参数。 这个字符串将通过$ P!{querywhere}附加到Connection SQL(mysqlDB),但是通过使用一些字符我得到了一些\问题。 例如:“an”和(等等。

我在netbeans中打开了java文件来调试它。 在那一行:

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

parameters是一个带名字的字符串 querywhere 等于:

WHERE my_company_id ='12345'

(从netbeans调试器复制) 没关系。

如果我打印报告变量

$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' 

报告。

知道如何转移像“和”这样的字符吗? 似乎逃避char \在这种情况下不起作用。

谢谢你,以及最好的问候

基督教

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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