我是新來編寫jasper報告(和一般的SQL)。我們試圖在報告末尾加載RTF或HTML文件作爲披露。我們正在做這件事的方法是在SQL的一部分,選擇文件(「披露」)的名稱:從Jasper中的參數加載文件
SELECT
....
'Disclosure' as Disclosure
FROM
...
然後,很明顯,對於這一個領域:
<field name="Disclosure" class="java.lang.String"/>
最後,在該報告的摘要部分,我們使用的loadFile實用程序:
<textFieldExpression class="java.lang.String"><![CDATA[JasperFileRuntimeUtility.loadFile($F{Disclosure}, $P{REPORT_PARAMETERS_MAP})]]></textFieldExpression>
如果報告返回的數據,這個精美的作品。但是,如果原始查詢的結果沒有返回任何記錄,那麼披露信息不會包含在報告中(因爲查詢的結果顯然不是什麼)。
我認爲我們可以通過提供「Disclosure」作爲參數來輕鬆解決此問題,但是當我將其更改爲$ P而不是$ F時。我收到關於無效的io文件類型的錯誤。
我也嘗試創建一個變量,並將$ V設置爲我們傳入的$ P的值,但在那裏也沒有運氣。
是否有加載文件類型的實用程序,將加載像我們正在做的字段參數?還有其他建議嗎?
感謝幫助!
因此,我們目前正在做的是使用SQL查詢將字符串「Disclosure」傳遞到字段「Disclosure」中......然後報告使用該loadFile函數加載名爲「Disclosure」的文件。我實際上並不知道它是如何工作的,爲什麼它知道文件擴展名..但它確實會加載我們在摘要中的disclosure.html文件。 但是..不幸的是..當查詢本身沒有返回任何記錄時,它不會將該「Disclosure」字符串傳遞給「Disclosure」字段..所以loadFile不起作用。 –
更好地理解你的問題我已經編輯了我的答案,讓我知道如果你在類中找到JasperFileRuntimeUtility類... –
太棒了!非常感謝。我不知道爲什麼我沒有看到這個,但那絕對是答案。我用直接的「Disclosure」字符串替換了$ F值。咄。非常感謝! –