Pass value from SubReport to Main Report and again back to another Sub Report using Shared Variable


I am designing my report using iReport4.5.  I am new to Jasper Reports...

1. My main report displays the detailed transaction

2. First Sub Report say "SUMMARY_RPT" displays the summary by category

3. Second Sub Report say "PARAMETER_RPT" displays the input parameter's used

Here is the requirement.

In my second sub report PARAMETER_RPT I have a field that will give me a title value lets say the Field Name is "MY_TITLE" and the value is "THIS IS MY TITLE" as the output of my query.

How do I pass this MY_TITLE from the second sub report to the main report and would like to display the value in my first sub report SUMMARY_RPT

Or is there a way that I can pass the MY_TITLE directly from my Second Sub report to my First Sub Report using Shared Variable...

if so could you please give me a step by step instruction with what and how to do.. Please help...





meeza4u's picture
Joined: Apr 3 2012 - 7:23am
Last seen: 10 years 5 months ago

5 Answers:

You cannot go backwards with the sharing. If the first subreport literally comes first on the report then it is evaluated prior to the second subreport. If there is a reason it is first and can't be moved after the second then your only real option is to provide another subreport before the first that is only used to run the same query as the second and is blank otherwise. Then you can pass the values from the new subreport to the main and then into the previously labeled first subreport. The second will only be used to display the data that was also queried in the new subreport.

theclosh's picture
Joined: Jul 2 2010 - 11:11am
Last seen: 9 years 6 days ago

Agree with theclosh.  But, I'm not sure we're diagnosing the real problem here.

When you say you want to report on the parameters used, which parameters are you talking about?  The parameters that were entered to create your master report (the one with the subreports) or those used from the master to generate the first subreport?

If you want to create a Master report with a SQL Statement based on three params: pOne, pTwo, pThree (for instance).  Then this report calls a SubReport (srOne) using information based on either: pOne, pTwo, pThree or the contents of any/all the retrieved fields ($F{<fieldname>}).  Is that correct so far?

Then, based on what I'm reading, you want the results of some third report, another SubReport (srTwo), to be displayed on the srOne?  Is that correct?

If so, what I've done previously is to create the Master report and place a SubReport onto it.  This SubReport would be passed the necessary information (parameters or $F{<fieldname>} values) and retrieve it's data.  At this point, this SubReport (srOne) already knows about the parameters used to create itself.  They were passed into the report and you should be able to display them in any band you'd like on srOne (since they were available at the time of execution).

IF you are looking for the parameters entered to create the Master report here, why?  You can print them in another band (Summary for instance) on the Master report form.  But, if you really want to show the values from the Master report, you can just pass them to the SubReport (sbOne) - even if they are not used to help retrieve the data, you can still pass them if you want them to be displayed on sbOne.

IF you are looking for 'friendly names' for the criteria, you can still build a SubReport on which ever report you want to display the Parameters_Used for.  I've built reports that call SubReports, that in turn call multiple SubReports, which each call various other SubReports.  I think the one of the invoices I created was a mix/match of One Master collection of SubReports running (optionally based on the data) through 6 -10 layers of SubReports.  So I know you don't have to worry about 'only one layer' of subreports like you may have had to with other products out there.

Hope this helps.  Good luck.

Post Edited by CaptnTony at 04/18/2012 13:54
CaptnTony's picture
Joined: Jul 19 2006 - 12:24am
Last seen: 17 years 2 months ago

Hi CaptnTony,

First thank for a quick response

Sorry if my question was not that clear....

I have 1 master report which is populated using a Oracle Stored Procedure --- till this it works fine.

I then added two sub Reports.

lets say Sub1 and Sub2 in the summary band.

Sub1 displays the summary by category  - uses the same stored procedure used by the master sub report

Sub2 displays the input parameter - this uses a different stored procedure


Master Report

No.       Name        Categroy       Amount

01        WXY           W001           10.00
02        MMM          W001           10.00
03        WXYZ         W002           10.00
04        MMMZ        W002           10.00

Sub1 <Summary by Category Report>

Category        MyTitle                  <------  this comes from the second sub report
W001              20.00
W002              20.00

Sub2 <The Parameter Report>

User: MeeZa
Title: MyTitle                        <----- this title that you are seeing in the second sub report this is what I want to pass as a shared variable to the Sub1 report.....

Thanks for the help again....





meeza4u's picture
Joined: Apr 3 2012 - 7:23am
Last seen: 10 years 5 months ago
Yes the requirement is like that I will have to display the sub reports in a specific sequence. I have given a sample report format in CaptnTony's response. Thanks for your help with this again. Meeza
meeza4u's picture
Joined: Apr 3 2012 - 7:23am
Last seen: 10 years 5 months ago

You are able to pass values back to the calling report from any of the SubReports if I recall correctly.  I have been away from iRepors for about a year, so I don't recall 100% but I believe the configuration of the subreport not only has incoming parameters from the report calling it, but also a tab for returned values.

You should then be able to return a value from a subreport to the main report, then pass it to the 2nd subreport and use it there.



CaptnTony's picture
Joined: Jul 19 2006 - 12:24am
Last seen: 17 years 2 months ago