Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Charts IReport,Jasperserver:同一报告的不同结果_Charts_Jasper Reports_Ireport_Jasperserver - Fatal编程技术网

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"