通过jsp将参数传递给ireport

时间:2011-02-28 07:44:14

标签: java sql oracle jasper-reports

我使用iReport开发了一份报告。该报告应该在几个不同的数据库中运行。

在报告中我放了几个参数,其中一些包含日期格式。当我使用to_date(<parameter variable>)时,一切顺利。

但现在看来这种方法无法在Postgres上运行,所以我尽量不使用to_date()

我把它留作

ex: date = $P{date}

我将初始值更改为

new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2011")

编译时没有错误,但是当我运行应用程序时,它会出现错误:

java.io.StreamCorruptedException: invalid stream header: 3C68746D.

稍后我尝试将参数类型更改为String(来自java.util.Date)并将""作为初始值。

效果很好,除了Oracle数据库。有人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

首先,我猜你已经意识到你正在尝试将字符串值放在日期字段上,当你做new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2011")时,对吗?

我不知道我是否帮助你,但我猜你的数据库中的字段是Date,所以你必须使用日期,而不是字符串。最终的格式转换(将导致字符串)必须在您的报告模板中或您正在使用的任何内容中。但是数据库会将日期返回给您的API。

答案 1 :(得分:0)

将日期格式为字符串并以“DD / MM / YYYY”格式传递给代码中的i-report。

在i-report中以这种格式编写查询(更改日期格式以适应输入):

to_date('fieldnameofDB','DD/MM/YYYY')=$P{nameOfParameterPassed}

只需更改接受参数的方式,将参数的格式设置为String。