2011-02-28 120 views
0

我使用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數據庫。有人能幫我嗎?

+0

嗨,不知道我的問題是否正確。如果你想從oracle日期字段轉換爲char。 '選擇to_char(ora_datefield,'DD/MM/YYYY')作爲mydate from mytable;' – lkdg 2011-03-01 06:36:20

+0

正確,但我想將它作爲參數。我想使用相同的查詢和相同的報告模板,可以在三個不同的數據庫,mysql,oracle,postgres中成功運行。 – Chi 2011-03-03 04:37:29

回答

0

首先,我想你已經意識到你正在試圖將日期字段的字符串值,當你做new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2011"),對吧?

我不知道我是否正確,但我猜你的數據庫中的字段是Date,所以你必須使用日期,而不是字符串。最終的格式轉換(這將導致一個字符串)必須在您的報告模板或任何您使用的。但數據庫會將日期返回給您的API。

+0

「最終的格式轉換(這將導致一個字符串)必須在您的報告模板或您正在使用的任何內容中,但數據庫會將日期返回給您的API。」我不明白這個部分,對不起。你的意思是新的SimpleDateFormat(「dd/MM/yyyy」)。parse(「01/01/2011」)會輸出字符串類型嗎?謝謝你的關心。 – Chi 2011-03-03 04:35:10

+0

我的意思是你會發送和接收數據庫的日期。流程將與日期而不是字符串。最終的格式轉換(將日期轉換爲字符串)將在您的報表api中執行,並且不再與數據庫進行通信。 – bluefoot 2011-03-03 10:38:49

+0

這意味着當我使用java.util.date()作爲參數和新的SimpleDateFormat(「dd/MM/yyyy」)。解析(「01/01/2011」)作爲初始值,它假設沒問題吧?但爲什麼當我運行應用程序發送錯誤?此錯誤:java.io.StreamCorruptedException:無效的流頭:3C68746D。我使用Oracle數據庫。 – Chi 2011-03-04 01:16:34

0

以字符串格式和'DD/MM/YYYY'格式將日期傳遞給代碼中的i-report。

在我報告編寫查詢以這種格式(相比變化以適應輸入的日期格式):

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

只要改變你接受的參數的方式,設置格式參數爲String。