Java 使用SQL";其中(val1,val2,val3)中的列“;在JasperReports中

Java 使用SQL";其中(val1,val2,val3)中的列“;在JasperReports中,java,jasper-reports,Java,Jasper Reports,我有一个Jasper报告,它将Where子句作为参数: 我通过的where条款是: WHERE vw.computer_number IN ("12635, 34657, 35477") 当我在IReport中预览报告时,它将返回所有3页,其中每个页id=中指定的计算机编号() 但当我在HashMap中传递相同的参数时,它只返回带有第一个计算机编号的1页 参数定义: <parameter name="paySlipWhereClause" class="java.lang.String"

我有一个Jasper报告,它将Where子句作为参数:

我通过的where条款是:

WHERE vw.computer_number IN ("12635, 34657, 35477")
当我在IReport中预览报告时,它将返回所有3页,其中每个页id=中指定的计算机编号()

但当我在HashMap中传递相同的参数时,它只返回带有第一个计算机编号的1页

参数定义:

<parameter name="paySlipWhereClause" class="java.lang.String" isForPrompting="false"> 
  <defaultValueExpression>
    <![CDATA[" Where vw.computer_number IN(12635, 34657, 35477)"]]>
  </defaultValueExpression> 
</parameter>

构建参数值的Java代码:

String computer_numbers[] = {"12635", "34657", "3547"}; 
String computer_nos = ""; 
for (int i = 0; i < computer_numbers.length; i++) { 
  computer_nos = computer_nos + "," + computer_numbers[i]; 
} 
String comp_numbers = computer_nos.replaceFirst(",", ""); 
HashMap param = new java.util.HashMap<String, String>(); 
param.put("payroll_tag", payroll_tag); 
//" WHERE vw.computer_number IN (29875,31775,29929)" 
param.put("paySlipWhereClause", "WHERE vw.computer_number IN (" + comp_numbers + ")");
字符串计算机数字[]={“12635”、“34657”、“3547”};
字符串计算机_nos=“”;
对于(inti=0;i
请指定jrxml中包含db查询的部分和包含参数定义的部分。谢谢。
java代码是这样的:
字符串计算机编号[]={“12635”、“34657”、“3547”};字符串计算机_nos=“”;对于(int i=0;i
M.Hussaini我刚刚在对实际问题的评论中向您添加了代码。此外,您仍然没有按照@Jeremy的请求发布包含db查询的jrxml部分。将来,长代码块不属于注释,它们只是不可读。重要的是要记住,当向陌生人寻求帮助时,你要让他们尽可能容易地这样做。它只会让你最终得到更好的结果,而且你说的where子句看起来也不对。它看起来不像3个数字,而是数据库中的1个字符串。你的问题中有错吗?iReport中参数的实际值是多少?