Crystal report sub-report links - crystal-reports

I am trying to pass a parameter from the main report to a sub-report. I know this can be done from 'change sub-report links', but I assume it only works if the data type are the same for these parameters. Can I still do it if the parameters are of different types? i.e. the main report parameter is of type 'datetime' and sub-report is of type 'string'(which is in fact a string representing datetime). The sub-report calls a store procedure in the DB, which easier to deal with if the parameter is of type string.
I tried create a 'stepping variable'(say call it 'datetimeString') on the main report, to format the datetime parameter into string, then link this 'datetimeString' to the string parameter in the sub-report.
The above does not give me errors when configuring, but the funny thing is that now when i try to preview the main report, the sub-report does not show any data, store procedure in the sub-report is not executed. In the same preview session(without updating the parameters passed in), if i double click on the sub-report to view detail on the sub-report itself, the sub-report opens with data and the store procedure within the sub-report gets call.
It seems like the sub-report is not invoked if its parameter is not linked straight from a main report parameter.
Please let me know if you could suggest anything else to try. Thank you!

Related

How to dynamically order subreports in main report(jasper report)

Suppose,One main report can have 9 sub-reports.
Then user can have UI from which user can order the sub-report according to his/her choice.(like,which sub-report should be displayed first and which is next and so on).
SO,how can i achieve this ?
Follow the below steps to achieve your requirements
Create 9 parameters say, reportpath1,reportpath2,reportpath3,....reportpath9.
Prompt user to enter the order of the reports. Based on the order pass the respected report path to every parameter.
Meaning, if subreport9 is selected as 1st report, then pass the path of that subreport9 as reportpath1, if subreport8 is selected as 2nd report, then pass the path of that report as reportpath2 and so on
For example, if path of subreport9 is "report/samples/subreports/subreport9", then set parameter reportpath1 value as "report/samples/subreports/subreport9". If path of subreport8 is "report/samples/subreports/subreport8", then set paramter reportpath2 value as "report/samples/subreports/subreport8" and so on.
In report design, create 9 subreport and instead of hard-coding the path of each report, pass parameter in subreportexpression as below
For subreport1,
<subreportExpression><![CDATA[$P{ReportPath1}]]></subreportExpression>
For subreport2,
<subreportExpression><![CDATA[$P{ReportPath2}]]></subreportExpression>
and so on.
Hope this should solve your problem.
Answer for getting variable from subreport
Right click on subreport in Parent report.
Go to Properties
Under Subreport session, click "Return values"
Add the subreport variable and map it to the parentreport variable.
Then use that parentreport variable in your parent report.
Hope this should solve your another problem.

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.

Crystal Reports - Link subreport parameter without field

I have a subreport with several parameters.
The main report also has some parameters.
The subreport parameters are prompting when you run the main report...
All the parameters for both sub and main prompt at the same time.
Is there a way to get the subreport params to just prompt once you get to the subreport?
I have tried linking the subreport...
The problem is there are no fields to link to in the subreport.
The params for the subreport just point to start and end date formulas.
Any ideas?
Link the parameters of the sub report with parameters or fields of the main report... Coming to prompting the parameters when sub report is opened to the extent I know that is not possible but I would suggest you to try Ondemand subreport once.

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}).

Subreport values are not displayed in main report

I have my main report which contains 1 subreport. When I run my main report the subreport values are not displayed in my main report, but when I run my subreport individually I can see the output in PDF format. Can anyone help me in fixing this issue?
First see the connection with right click on the report and click on open subreport if its working then clik on the subreport go to the subreport property and see the parameter passed to the subreport is correct or not if not please pass properly. also see the parameter value required for the subreport is that comming from main report.
Means : if your subreport require account_id = 5 the it must that main report passes the value 5 to the subreport.
You need to call the SubreportProcessingEventHandler and add the datasource.
Step 2: Check the properties of subreport.
If it does not need any parameters from main report. Do not add any.
The path of the repo