Jasper reports Ireport/Jasperreports中的参数

Jasper reports Ireport/Jasperreports中的参数,jasper-reports,ireport,Jasper Reports,Ireport,我正在使用一个名为runjasper.jar的工具来填充JRXML文件。 在该文件中,我有一个名为querywhere的参数。 此字符串将通过$P!附加到连接SQL(MySQL DB)中!{querywhere},但使用一些字符时遇到了一些问题。 例如:“,”和(等等 我在NetBeans中打开了java文件来调试它。 在该行: JasperPrint print = JasperFillManager.fillReport(report, parameters, conn); 参数是一个名称

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

我在NetBeans中打开了java文件来调试它。 在该行:

JasperPrint print = JasperFillManager.fillReport(report, parameters, conn);
参数是一个名称为的字符串
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' 
对报告的补充

你知道如何转移像
这样的字符吗? 在这种情况下,escape char
\
似乎不起作用

谢谢你,并致以最良好的问候


Christian

在hasmap中传递参数时,可以将变量设置为字符串,并在ireport中创建参数,并在properties中声明为字符串。在hash map参数中设置的字符串值与它将替换的值相同。

可以使用如下表达式:
选择..FROM..WHERE strAttr=$p{strFilter}
在jrxml文件中

报告模板(jrxml文件)中的代码段:


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

Map params=newhashmap();
JasperReport-JasperReport=JasperCompileManager.compileReport(reportSource);
//参数put(“strFilter”、“Berl”)in;
//参数put(“strFilter”、“Muni\“ch”);
参数put(“strFilter”、“Stuttga'rt”);
JasperPrint JasperPrint=JasperFillManager.fillReport(jasperReport,参数,连接);
JasperExportManager.exportreporttopffile(jasperPrint,pdfFileName);
或者可以使用如下表达式:
SELECT..FROM..WHERE$p!{whereClause}

报告模板(jrxml文件)中的代码段:


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

Map params=newhashmap();
JasperReport-JasperReport=JasperCompileManager.compileReport(reportSource);
//参数put(“strFilter”、“Berl”)in;
//参数put(“whereClause”,“AND city='Berl)in'”;
//参数put(“strFilter”、“Muni\“ch”);
//参数put(“whereClause”,“AND city='Muni\'ch'”);
参数put(“strFilter”、“Stuttga'rt”);
参数put(“whereClause”,“AND city='Stuttga”“rt'”);
JasperPrint JasperPrint=JasperFillManager.fillReport(jasperReport,参数,连接);
JasperExportManager.exportreporttopffile(jasperPrint,pdfFileName);

Hi.我真的不太明白:JavaCode:Map parameters=new HashMap();…稍低一点:String paramValueString=“WHERE bla='blub'”;也稍低一点。parameters.put(paramName,paramValueString);在ireport中,Param声明为“java.lang.String”那么:错误在哪里呢?在php中执行jar文件似乎是个问题。有一个函数(escapeshellarg)可以逃逸所有Shell字符。直到现在我还不知道如何执行“unescapeshellcmd”,因为该函数似乎是永久启用的。thx@alex。您的解决方案似乎是最基本的解决方案,并且能够正常工作@欢迎,克里斯蒂安:)