2013-07-04 168 views
4

我是新手,我正在設計我的報告,使用iReport 4.5如何將參數從一個子報告傳遞到另一個子報告

我有一個主報告(MainReport)和三個子報表Sub1的分公司2Sub3中

Sub1的我有三個摘要變量說presentPayablepresentPayment餘款

分公司2我有一個總結變量說TOTALCOST

我需要使用的Sub1的摘要變量,分公司2Sub3中

我該怎麼做?這可能會將變量從一個子報告傳遞給另一個?

否則,請爲我提供任何替代方案。

+0

可能的重複:[將參數從主報表傳遞到子報表到Jasper子報表](http://stackoverflow.com/q/13843167/876298)&[將子報表變量傳遞給其他子報表](http:// stackoverflow。 com/q/7823179/876298) –

+0

嗨亞歷克斯,我需要將參數從一個子報表傳遞到另一個子報表。我還沒有找到在這個提供的鏈接解決方案。 – NSS

回答

2

要將一個值從一個子報表傳遞給它的父項,父項必須首先有一個變量才能接收該值。你的情況主要報告應該有4個變量,分別爲presentPayablepresentPayment平衡TOTALCOST

接下來,您需要將returnValue元素添加到主報告中的subreport元素。此元素使用屬性subreportVariabletoVariable將子報表中的變量映射到此報表中的變量。

要在iReport中執行此操作,請在主報告中單擊您的子報告元素。在屬性列表中,單擊返回值。應該出現一個對話框。點擊添加按鈕。輸入子報告變量的名稱,然後選擇您希望將其轉移到此報告中的變量。您應該將計算類型保留爲「Nothing」,這將指示jasper簡單地用新值覆蓋變量。點擊Ok添加此項,然後重複其他變量/子報表。

現在,當您運行報表時,每次子報表完成處理時,子報表中變量的當前值將傳回給主報表中的指定變量。

要在另一個子報表中使用該值,需要將主報表中的變量作爲參數傳遞給另一個子報表。這包括兩部分:將subreportParameter添加到父報告中的subreport元素,並將parameter添加到子報告本身。

在iReport中,單擊主報表中的子報表元素。在屬性列表中,單擊參數。在出現的對話框中,單擊按鈕。爲參數指定一個名稱(例如,presentPayable),並輸入引用主報表中變量的值表達式(例如$V{presentPayable})。對您要通過的每個變量重複此操作。

接下來,打開您的子報表。在報告檢查員中,右鍵點擊參數。選擇添加參數,然後重命名新參數以匹配您在上一步中輸入的名稱。

在子報表中,您現在應該可以像任何其他參數一樣引用這些值(例如$P{presentPayable})。

+0

嗨GenericJon,非常感謝您給出答案。我已經完成了您提到的所有步驟,除了最後一點。也就是說,要在另一個子報表中使用該值,只需將主報表中的變量傳遞給另一個子報表作爲參數。你能否一步一步向我解釋.Bcoz我沒有得到如何將變量作爲參數從一個報告傳遞給另一個報告。 – NSS

+0

@NSS:我已經添加了一些如何將它作爲參數傳遞的步驟。希望有所幫助。 – GenericJon

+0

不知道我是否需要打開一個新問題; LMK。我遵循了步驟。我的問題和我想的一樣。我需要來自Table1的Date1的每個實體的Volume1,來自Table2的Date2的Vol2以及每個實體的Table3中的[Vol2-Vol1]。 //我將Entity,Vol1和Vol2從前兩個表中輸入MainReport,然後輸入到Table3中。 ///然而,當我預覽,我得到這個錯誤:引起:net.sf.jasperreports.engine.JRException:變量WellID_Return不能從源變量WellID分配。 \t at net.sf.jasperreports.engine.fill.AbstractVariableReturnValueSourceContext.check(AbstractVariableReturnValueSourceContext.java:77) – dharol

相關問題