【问题标题】:Jasper Report parameter returns wrong resultsJasper Report 参数返回错误结果
【发布时间】:2011-07-09 08:09:55
【问题描述】:

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

    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}

这里是 Order 表架构:

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$

谢谢,

【问题讨论】:

    标签: reporting jasper-reports


    【解决方案1】:

    尝试将$P{} 语法切换为$P!{}。如,

    WHERE
        orders.`customer_id` = $P!{cust_id}
    

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

    【讨论】:

      猜你喜欢
      • 2018-11-12
      • 1970-01-01
      • 2018-05-04
      • 2013-01-11
      • 2021-05-05
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多