【问题标题】:Variable Expression: Count all records where condition >0 is met变量表达式:计算满足条件>0的所有记录
【发布时间】:2013-03-01 17:30:42
【问题描述】:

我创建了一个变量来为我的报告保留一个位置中所有机械零件 ID 的计数。这很好用,现在我想添加一个过滤器,其中仅当机械零件 ID 的数量 > 0 时才计算它们。

这是我必须开始的:

变量名称:PART_COUNT

变量类类型:Java.lang.Integer

计算类型:计数

重置类型:组

重置组:LOCATION_ID

增量类型:无

变量表达式:$F{MACHINERY_PART_ID}

我的报告中的一个字段设置如下:

文本字段表达式类:Java.lang.Integer

评估时间:分组

评估组:LOCATION_ID

文本字段表达式:$V{PART_COUNT}

新条件是 count(machinery_part_id) group by location_id 数量 >0

$F{MACHINERY_PART_ID}$F{QUANTITY_SENT} 都是 java.lang.double 字段,我尝试在变量表达式中输入以下内容:

New Double($F{QUANTITY_SENT} > 0.00 ?  $F{QUANTITY_SENT}.doubleValue() : 0d)

但它会出错:

Syntax error, insert ";" to complete BlockStatements

我正在使用 iReport 3.0.0

请帮忙, 谢谢!

【问题讨论】:

  • 也许我的解释不正确,但看起来你的变量和字段是整数,而你的变量表达式“New Double($F{QUANTITY_SENT...) 正在寻找创建一个双精度数?您的表达式语言是设置为 Java 还是 Groovy?
  • 表达式语言是Java。
  • 我尝试将变量表达式更改为:'($F{QUANTITY_SENT} > 0.00 ? $F{QUANTITY_SENT} : 0d)' 并且错误为'The operator > is undefined for the argument type (s) 双倍,双倍'
  • 我将变量类类型和文本字段表达式类切换到 java.lang.double 并尝试New Double($F{QUANTITY_SENT}.doubleValue() > 0.00 ? $F{QUANTITY_SENT}.doubleValue() : 0d) 它不再出错,但它只排除了 $F{QUANTITY_SENT} 为空的记录。 $F{QUANTITY_SENT}=0.00 的记录仍在统计中。

标签: jasper-reports ireport


【解决方案1】:

我想通了:

变量

变量名称:PART_COUNT

变量类类型:Java.lang.Double

计算类型:总和

重置类型:组

重置组:LOCATION_ID

增量类型:无

变量表达式:new Double($F{QUANTITY_SENT}.doubleValue() > 0.00 ? 1.0:0.0)

文本字段

文本字段表达式类:Java.lang.Double

评估时间:分组

评估组:LOCATION_ID

文本字段表达式:$V{PART_COUNT}

问题 我现在如何切换这个表达式以返回一个整数??

感谢您为我指明正确的方向。

【讨论】:

    【解决方案2】:

    我想通了:

    文本字段

    文本字段表达式类:Java.lang.Integer

    评估时间:报告

    文本字段表达式:new Integer($V{PART_COUNT}.intValue())

    在这里找到答案: http://community.jaspersoft.com/questions/525053/cannot-cast-int-integer

    【讨论】:

      猜你喜欢
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 2019-02-13
      • 2021-12-26
      • 1970-01-01
      • 2020-01-08
      • 2020-09-03
      • 2021-12-17
      相关资源
      最近更新 更多