Where句をパラメータとして取るジャスパーレポートがあります:
私が渡すwhere句は次のとおりです。
WHERE vw.computer_number IN ("12635, 34657, 35477")
IReport でレポートをプレビューすると、各ページ ID = IN() で指定された computer_number である 3 ページすべてが返されます。
しかし、パラメーターとして 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 + ")");