jsp将参数传递给ireport
我使用iReport开发了一个报告。该报告应该运行在几个不同的数据库中。jsp将参数传递给ireport
在报告中我提出了几个参数,其中一些包含日期格式。当我使用to_date(<parameter variable>)
时,一切进展顺利。
但现在看来这种方法不能在Postgres上运行,所以我试图不使用to_date()
。
我只是把它作为
ex: date = $P{date}
和我改变初始值
new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2011")
。
compilling时没有错误,但是当我通过应用程序运行时,它可能出现的错误造成的:
java.io.StreamCorruptedException: invalid stream header: 3C68746D.
后来我试图将参数类型更改为String
(从java.util.Date
),并把""
作为初始值。
它工作正常,除了Oracle数据库。有人能帮我吗?
首先,我想你已经意识到你正在试图将日期字段的字符串值,当你做new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2011")
,对吧?
我不知道我是否正确,但我猜你的数据库中的字段是Date,所以你必须使用日期,而不是字符串。最终的格式转换(这将导致一个字符串)必须在您的报告模板或任何您使用的。但数据库会将日期返回给您的API。
“最终的格式转换(这将导致一个字符串)必须在您的报告模板或您正在使用的任何内容中,但数据库会将日期返回给您的API。”我不明白这个部分,对不起。你的意思是新的SimpleDateFormat(“dd/MM/yyyy”)。parse(“01/01/2011”)会输出字符串类型吗?谢谢你的关心。 – Chi 2011-03-03 04:35:10
我的意思是你会发送和接收数据库的日期。流程将与日期而不是字符串。最终的格式转换(将日期转换为字符串)将在您的报表api中执行,并且不再与数据库进行通信。 – bluefoot 2011-03-03 10:38:49
这意味着当我使用java.util.date()作为参数和新的SimpleDateFormat(“dd/MM/yyyy”)。解析(“01/01/2011”)作为初始值,它假设没问题吧?但为什么当我运行应用程序发送错误?此错误:java.io.StreamCorruptedException:无效的流头:3C68746D。我使用Oracle数据库。 – Chi 2011-03-04 01:16:34
以字符串格式和'DD/MM/YYYY'格式将日期传递给代码中的i-report。
在我报告编写查询以这种格式(相比变化以适应输入的日期格式):
to_date('fieldnameofDB','DD/MM/YYYY')=$P{nameOfParameterPassed}
只要改变你接受的参数的方式,设置格式参数为String。
嗨,不知道我的问题是否正确。如果你想从oracle日期字段转换为char。 '选择to_char(ora_datefield,'DD/MM/YYYY')作为mydate from mytable;' – lkdg 2011-03-01 06:36:20
正确,但我想将它作为参数。我想使用相同的查询和相同的报告模板,可以在三个不同的数据库,mysql,oracle,postgres中成功运行。 – Chi 2011-03-03 04:37:29