在Jasper中查询“Case When”时自动更改

时间:2014-02-25 08:36:29

标签: sql sql-server dynamic jasper-reports

我有类型为float的数据。我想将它们显示为数字/整数,但仅针对一种情况,它将显示为浮点数。对于第一个我想到的案例在查询中,它将被解决,但它没有发生。

我把这段代码

CASE WHEN SUBSTRING (c.kode_hs,1,2) = '71' THEN CAST(c.brutto AS float) ELSE c.brutto END AS brutto, CASE WHEN SUBSTRING (c.kode_hs,1,2) = '71' THEN CAST(c.netto AS float) ELSE c.netto END AS netto,

但它并没有成为浮动类型。 我尝试修改jasper的设置,但它只适用于一种数据类型。 我采取了另一种替代方案,我将类型更改为数字,以便案例CASE WHEN SUBSTRING (c.kode_hs,1,2) = '71'得以解决。但是,不幸的是,当它的值最高(或具有很多特征)时,它显示为科学数字e.x。:2E9。在报告视图中,这种外观肯定会被忽略。对我来说还有其他解决方案吗?不管怎样,谢谢

1 个答案:

答案 0 :(得分:0)

您可以按原样从数据库中选择数据,作为浮点数,并在Jasper中执行操作。 将JasperReport中c.kode_hs字段的类型设置为Float,将TextBox的ExpresionClass设置为要将值显示为String。然后将文本字段表达式设置为

$F{kode_hs}.toString().substring(0,2).equals("71")?new java.text.DecimalFormat("#0.00").format($F{brutto}):new java.text.DecimalFormat("##").format($F{brutto})

假设$ F {kode_hs}和$ F {brutto}是包含相应值的字段。