Jasper Report参数返回错误的结果

时间:2011-07-09 08:09:55

标签: reporting jasper-reports

我正在编写一份报告以获取mysql数据库的结果。该查询在mysql数据库中有一个int类型的参数。我定义了一个java.lang.Integer类型的参数,但是当我运行报告并给它一个值时,它不会返回任何数据。我试图将参数类型更改为String,然后我得到了不正确的结果。这是报告查询:

    SELECT
     orders.`number` AS orders_number,
     orders.`length` AS orders_length,
     orders.`thick` AS orders_thick,
     orders.`date` AS orders_date,
     orders.`weight` AS orders_weight
FROM
     `orders` orders
WHERE
     orders.`customer_id` = $P{cust_id}

这是订单表架构:

CREATE TABLE `orders` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `customer_id` int(11) DEFAULT NULL,
  `number` double DEFAULT NULL,
  `length` double DEFAULT NULL,
  `thick` int(11) DEFAULT NULL,
  `weight` double DEFAULT NULL,
  `date` date DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `customer_fk` (`customer_id`)
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8$

谢谢,

1 个答案:

答案 0 :(得分:0)

尝试切换$P{}的{​​{1}}语法。如,

$P!{}

Jasper通常将查询转换为java PreparedStatement对象,然后使用对象的方法设置参数。在将查询转换为对象之前,WHERE orders.`customer_id` = $P!{cust_id} 语法将执行参数替换。