how to use parameter in subreport with iReports? - jasper-reports

I have this problem. I'm trying to do a report using iReport.
This is my master query:
SELECT r.idreq AS Id, d.denom AS Dependencia, t.denom AS TipoProceso, r.docproceso AS DocProceso
FROM requerimiento r, cotizacion c, dependencia d, tipoproceso t
WHERE r.idreq=c.idreq AND r.iddepen=d.iddepen AND r.idtipoproc=t.idtipoproc
AND c.estado=true AND r.idreq=$P{pIdReq}
As you see, there exists pIdReq parameter in the master report, now in the master detail I've added a subreport, that subreport has this query call SPCuadroComparativo3($P{pIdReq}).
I wanna know how can I get linking both parameters? Or how can I use the parameter from master report?

Create the parameter in main Report pIdReq.Drag and drop a sub Reprot.Go to sup Report properties click on PARAMETERS it will ask for add sup report parameter.So add the parameter name pIdReq then expression map with main Report parameter i.e pIdReq.Go to sub report create the parameter name same as pIdReq. you can use now the sub report parameter in sub report query which is linked with main report parameter pIdReq by $P{pIdReq}
*create the main report parameter by name pIdReq.
*Goto properties of subReport configure Parameters.
*Add the same Parameter Name in sub report.
*Put the sub report parameter in sub report query
.

Related

how to print crystal subreport parameter on main report header

I have a crystal report where the date parameter is in the sub report. I would like to print the parameter dates in the main report header.
How do I do that?
Make is a main report parameter and pass it into the subreport as a linked parameter.

Variable is not showing from sub report to main report in iReport

I am trying to pass a variable from sub report to main report. I have already declared variable in subreport. But it's not showing when I'm trying to use this at the main report.
Can anyone please help me out?
Thanks in advance.
Add the folowing parameters in Properties of your Subreport
Parameters Map Expression : $P{REPORT_PARAMETERS_MAP} : This is used to pass a map containing report parameters to the subreport. The map is usually obtained from a parameter in the master report, or by using the built-in REPORTS_PARAMETERS_MAP parameter to pass the parent report's parameters to the subreport. This expression should always return a java.util.Map object in which the keys are the parameter names.
Subreport Expression Class : java.lang.String
Subreport Expression : $P{SUBREPORT_DIR} + "yourPage.jasper"
Connection/Data source Expression, select Use connection expression, and put : $P{REPORT_CONNECTION}
See also:
JasperReports - Create SubReports
As per my knowledge, You need to specify Parameters for that sub-report present in main-report based on which it will fetch data. It may help.
While returning any value from subReport you have to just type the variable name you declared at the subReport in "subReport variable" field. And at the "Local Destination Variable" you will find the variable you declared in main report. Like this:
Don't forget to set the variable expression you declared at the main report. It has to be that variable itself.

Parameter Value in main report is not passed to a parameter in the subreport

I need your assistant in passing a value of a parameter in the main report to the subreport. I defined a parameter in the main report which is called {?ReportNumber} and its type is Number and it is static.
In the Select Expert of the Main Report I added the below code:
{engine.reportnumber}={?ReportNumber}
This will take the value of the reportnumber from the table and it will assign it to the parameter. Each time I ran the report, the value will be different based on the retrieved data.
In the Subreport, I created again a parameter with the same name {?ReportNumber} and its type is Number and it is static.
I have added a subreport link which is {?ReportNumber} parameter and below I selected to match the {?ReportNumber} parameter which is in the subreport.
However my issue is that when I ran the report, the report is prompting me to enter the parameter of the subreport, even though I have added and assigned a value to it as I have explained in the above steps.
I am using Crystal Reports 2011
Even tried to use shared variable in the main report:
shared numbervar report_number := {engine.rptno};
report_number;
In the sub report, I create a formula ("Shared_report_number") and I placed it in the report header. It has the code:
shared numbervar report_number;
report_number;
I clicked on Select Expert and then I chose the field {engine.rptno} is equal to {#Shared_report_number}, it produces an error that : the formula cannot be used because it must be evaluated later
Kindly assist me in passing the value of the parameter from the main report to the subreport.
This prompting shows that your parameter is not link properly.
When you link the parameter. In left side, main report parameter show
1. is of sp parameter
2. is of custom report parameter
While you linking, note that you custom report with report name is joined.
Please check this below link, in UI potion of third image , right-bottom side you have to choose sub-report parameter. So check and then link.
http://blog.niklasottosson.com/?p=1137
In your case, I think your main report parameter is link with itself. not with subreport parameter.
Check this link carefully while mapping.

How to pass the parameter from one subreport to another subreport

I am newbie and I'm designing my report using iReport 4.5.
I have a main report (MainReport) and three subreports (Sub1, Sub2, Sub3)
In Sub1 I have three summary variables say presentPayable, presentPayment, balance
In Sub2 I have one summary variable say totalCost
I need to use the summary variables of Sub1, Sub2 in my Sub3.
How can I do this? Is this possible to pass the variables from one subreport to another?
Otherwise please provide me any alternate to do this.
To pass a value from a subreport to its parent, the parent must first have a variable to receive the value. In your case the main report should have 4 variables, one each for presentPayable, presentPayment, balance, and totalCost.
Next you need to add a returnValue element to the subreport element in the main report. This element maps a variable in the subreport to a variable in this report using the attributes subreportVariable and toVariable.
To do this in iReport, click on your subreport element in the main report. In the properties list, click on Return Values. A dialog should appear. Click on the Add button. Type the name of the subreport variable and select the variable in this report that you would like it to be transferred to. You should leave the calculation type as "Nothing", which will instruct jasper to simply overwrite the variable with the new value. Click Ok to add this, then repeat for the other variables/subreports.
Now when you run the report, each time the subreport has completed processing, the current value of the variable in the subreport is passed back to the specified variable in the main report.
To use that value in another subreport, you need to pass the variable from the main report to the other subreport as a parameter. This has two parts: Adding a subreportParameter to the subreport element in the parent report, and adding a parameter to the subreport itself.
In iReport, click on your subreport element in the main report. In the properties list, click on Parameters. In the dialog that appears, click the Add button. Give the parameter a name (e.g. presentPayable) and input a value expression that references the variable in your main report (e.g. $V{presentPayable}). Repeat this for each of the variables that you want to pass in.
Next, open your subreport. In the report inspector, right-click on Parameters. Select Add Parameter, then rename the new parameter to match the name you entered in the previous step.
In the subreport, you should now be able to reference these values like any other parameter (e.g. $P{presentPayable}).

Pass values from main report to sub report?

I just started to work with iReport and got the task to do some changes to already existing reports.
Currently there's a main report with section A and B (contact details and some other info). There is a sub report C and then a subreport D. My task is to replicate A and B for every item in D. If the report has many D sections I want to have an A and B for each.
All data is in the same XML document and to get the data for section A and B I have simply
((net.sf.jasperreports.engine.data.JRXmlDataSource)$F{REPORT_DATA_SOURCE}).dataSource("/Header/")
and for sub report with D section
((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("/Header/ProductHeader/Member")
if I drag a field from Document Structure that displays data in Section A to section D and check the expression it says
$F{ContactNumber} but displays Null in D even though it displays a value in section A
How do I need to modify my data sources to display content of A and B in D?
Thanks in advance
You need to pass parameters to your sub-report. A sub-report doesn't share any data from your main report unless you explicitly define the contract. It is more like a method call then a continuation of the main report.
If you wanted to display a field with the name foo in your main report in the sub-report you would need to do the following:
Create a parameter in your sub-report with the name foo.
Create a sub-report element in your main report.
In the Properties of the sub-report element, there is a property called "Parameters". Open up the dialog and add a parameter with the name foo and the correct value expression.
When you want to use the value for foo in your sub-report you should use the expression: $P{foo} if it is a main report parameter.