前端举报链接:
PharmacyItemDispnse_ByOffice.rptdesign&SDATE="+sdate+"&EDATE="+edate+"&OID="+oid+"&MEDID="+medy;
我从前端传递的值是这样的
前端报告链接:
PharmacyItemDispnse_ByOffice.rptdesign&SDATE=2024-01-08&EDATE=2024-01-08&OID=7&MEDID=253078,253077,253076
问题是 BIRT 不接受 MEDID 报告参数。MEDID 在 BIRT 中设置为字符串我确保 sql 查询包含“IN” 但我得到的错误是
Error:
Cannot convert the parameter value 253076,253077,253078 at index 1 from the value type of class java.lang.String to the ODA type of 4. For input string: "253076,253077,253078"
sql query added in Birt report Data set:
SELECT
ite.ITEM_PDT_ID,
ite.ITEM_NAME ,
im.ITEM_CODE ,
ite.item_unit,
inv.OFFICE_ID,
od.OFFICE_NAME,
sum(ite.item_qtysold) total_dispensed
FROM
ABC.invoice_item ite
INNER JOIN ECLINIC_KNG.invoice inv
ON ite.item_invoice_id = inv.invoice_id
LEFT JOIN ECLINIC_KNG.OFFICE_DETAILS od ON inv.OFFICE_ID = od.OFFICE_ID
LEFT JOIN ECLINIC_KNG.ITEM_MASTER im ON ite.ITEM_PDT_ID =im.ITEM_ID
WHERE inv.INV_STATUS = 'Closed' AND
inv.INV_CANCEL_STATUS = 'N' AND
inv.office_id = ? AND
inv.invoice_date BETWEEN ? AND ?
AND ite.ITEM_PDT_ID IN (?)
GROUP BY ite.ITEM_PDT_ID,
ite.ITEM_NAME,
im.ITEM_CODE,
ite.item_unit,
inv.OFFICE_ID,
od.OFFICE_NAME
AFAIK 构造
IN ?
通常不受 JDBC 支持。
或者更准确地说,它不会像人们想象的那样发挥作用。
绑定变量必须始终是标量值。