【问题标题】:IReport, Jasperserver: different result for the same reportIReport,Jasperserver:同一报告的不同结果
【发布时间】:2013-06-11 03:34:28
【问题描述】:

我基于此请求的报告:

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"
;

“Diam”字段是一个smallint,问题出在这部分

$X{IN, cast("Diam" as character varying), DiamRQn}

DiamRQn 是控制输入使用的参数,它是来自请求的多项选择, 删除铸造时它说:

PSQLException: ERROR: operator does not exist : smallint = character varying

在 ireport preview 中投射它可以正常工作,但在 jasperserver 上,图表显示“Diam”的所有值,选中和未选中。据我了解,对于 jasperserver,铸造的“diam”始终存在于“DiamRQn”集合中,尽管 ireport 一切正常!

附加信息: 数据库管理系统:postgresql ireport 版本:5.0.1

【问题讨论】:

  • DiamRQn参数的参数类是什么?
  • 它的 java.util.Collection 我尝试了类 List 和相同的结果,我也厌倦了这个 java.util.Collection 并且没有办法
  • 确保参数名称与输入控件的名称相同。如果不是,它可能会抛出错误,但值得检查。
  • 您可以为测试做的另一件事是在您的报告中放置一个文本字段并将表达式设置为:$P{DiamRQn}.toString()。这样您就可以看到输入控件传递给报表的内容。
  • 好主意,我会试试的,你对汤姆很有帮助,谢谢

标签: charts jasper-reports ireport jasperserver


【解决方案1】:

在 Jasper 中使用 $IN{} 语句执行功能之前,我遇到了一些问题。我的解决方案通常是先执行函数,然后执行 $IN{} 语句。我通常在子选择中执行我需要执行的任何功能,然后在它之外执行 $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"

我可能还会将部分 where 子句移动到 Consom_N 和 CptDim 表之间的连接中,但这是可选的。

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"

【讨论】:

  • 同样的问题!还是非常感谢你
【解决方案2】:

听起来输入控件正在返回 varchar 类型的值(char 变化)。是否可以将输入控件的查询/列表源更改为返回 smallint 类型的值?那么也许你可以删除CAST 函数,希望一切都会好起来。

【讨论】:

  • 谢谢Tom,不过我试过了,现在我修改了db源中字段的数据类型,又失败了!非常感谢
  • 您是否收到错误消息?还是只是不过滤结果?
  • 没有错误,没有过滤结果图片附在这个帖子里,请看link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
相关资源
最近更新 更多