Charts IReport,Jasperserver:同一报告的不同结果
我的报告基于此请求:Charts IReport,Jasperserver:同一报告的不同结果,charts,jasper-reports,ireport,jasperserver,Charts,Jasper Reports,Ireport,Jasperserver,我的报告基于此请求: select "Annee" ,"Diam", sum("Consommation") from "Consom_N","CptDim" where "Annee" >= $P{a1} and "Annee" <= $P{a2} and "Consom_N"."NumCpt"="CptDim"."NumCpt"and "District"= $P{dst} and $X{IN, cast("Diam" as character varying), DiamRQ
select "Annee" ,"Diam", sum("Consommation") from "Consom_N","CptDim"
where "Annee" >= $P{a1} and "Annee" <= $P{a2}
and "Consom_N"."NumCpt"="CptDim"."NumCpt"and "District"= $P{dst}
and $X{IN, cast("Diam" as character varying), DiamRQn}
group by "Annee","Diam"
order by "Annee"
;
DiamRQn是控制输入使用的参数,它是从请求中进行的多项选择,
当移除铸件时,它会显示:
PSQLException: ERROR: operator does not exist : smallint = character varying
通过强制转换,它在ireport预览中可以正常工作,但在jasperserver上,图表显示了“Diam”的所有值、选定值和未选定值。据我所知,对于jasperserver来说,铸造的“diam”始终存在于“DiamRQn”集合中,尽管ireport的一切都很顺利
附加inf:
数据库管理系统:postgresql
ireport ver:5.0.1在Jasper中使用$IN{}语句执行函数之前,我遇到了一些问题。我的解决方案通常是先执行函数,然后执行$IN{}语句。我通常在sub select中执行需要执行的任何函数,然后在其外部执行$IN{}语句。所以你可以试试这个:
SELECT *
FROM
(
SELECT "Annee" ,"Diam", sum("Consommation"),
cast("Diam" as character varying) AS Diam_char
FROM "Consom_N","CptDim"
WHERE "Annee" >= $P{a1} and "Annee" <= $P{a2}
and "Consom_N"."NumCpt"="CptDim"."NumCpt" and "District"= $P{dst}
GROUP BY "Annee","Diam"
) x
WHERE $X{IN, Diam_char, DiamRQn}
ORDER BY "Annee"
选择*
从…起
(
选择“Annee”、“Diam”、“sum”(“组合”),
将(“Diam”作为字符变化)转换为Diam_char
从“consm_N”、“CptDim”
其中“Annee”>=$P{a1}和“Annee”听起来像是输入控件返回varchar类型的值(char变化)。是否可以将输入控件的查询/列表源更改为返回smallint类型的值?然后,也许您可以删除
CAST
函数,希望一切都会好起来。同样的问题!非常感谢您谢谢Tom,但我已经尝试过了,现在我已经在db源中更改了字段的数据类型,并且再次失败!非常感谢你!你有错误吗?或者它只是没有过滤结果吗?没有错误,它没有过滤结果图片附在这篇文章中,请看一看DiamRQn
参数的参数类是什么?它的java.util.Collection我尝试了类列表和相同的结果,我也厌倦了这个java.util.Collection并且没有办法确保参数名称与输入控件的名称相同。如果参数名称与输入控件的名称不同,则可能会引发错误,但值得检查。测试的另一个方法是在报表上放置一个文本字段,并将表达式设置为:$P{DiamRQn}.toString()
。这样您就可以看到输入控件传递给报表的内容。好主意,我会试试,非常有帮助,汤姆,谢谢
SELECT *
FROM
(
SELECT "Annee" ,"Diam", sum("Consommation"),
cast("Diam" as character varying) AS Diam_char
FROM "Consom_N","CptDim"
WHERE "Annee" >= $P{a1} and "Annee" <= $P{a2}
and "Consom_N"."NumCpt"="CptDim"."NumCpt" and "District"= $P{dst}
GROUP BY "Annee","Diam"
) x
WHERE $X{IN, Diam_char, DiamRQn}
ORDER BY "Annee"
SELECT *
FROM
(
SELECT "Annee" ,"Diam", sum("Consommation"),
cast("Diam" as character varying) AS Diam_char
FROM "Consom_N"
JOIN "CptDim" ON "Consom_N"."NumCpt"="CptDim"."NumCpt"
WHERE "Annee" >= $P{a1} and "Annee" <= $P{a2}
and "District"= $P{dst}
GROUP BY "Annee","Diam"
) x
WHERE $X{IN, Diam_char, DiamRQn}
ORDER BY "Annee"