Passing Parameter to Crystal Report
Recently, I was developing a pretty sophisticated Crystal Report that
included multiple sub-reports and used multiple stored procedures as
data sources. All of those stored procedures accepted the same
parameter, which made my life a little easier, since I only had to deal
with one parameter that I needed to pass to my Crystal Report.
In
order for all sub-reports to be able to recognize the parameter, which
I am passing to the main report, I had to link all of my sub-reports to
the main report using that parameter.
In order to link a sub-report to the main report, the following actions should be performed:
To link a subreport to the data in the primary report
- If you are creating a new subreport or importing an existing report as a subreport, from the Insert menu, click Subreport. Choose or create a report and click the Link tab.
- or -
If you have already placed a subreport in the primary report, but did not create a link at setup, navigate to the Subreport Links dialog box by choosing Subreport Links from the Edit menu.
The Subreport Links dialog box appears.
- Choose the subreport you want to link from the For subreport list (if it is not already selected).
- Select the field you want used as a link field in the primary (containing) report from the Available Fields list.
- Click the > arrow.
The field is added to the "Field(s) to link to" list box, and is now selected as a link field.
- Repeat steps 3 and 4 for each additional link, as desired.
- Use the Field link section (which will only appear if you have selected a link field) to set up the link for each link field:
- Select the field you want linked to the primary report from the "Subreport parameter field to use."
- Select the "Select data in subreport based on field" check box on and select a field from the adjacent drop
-d own list to organize the subreport data based on a specific field (this is the quick equivalent of using the Select Expert). If nothing is specified here, the subreport will adopt the organization of the primary report.
- Click OK.
When you run the report, the program will coordinate the data in the primary report with the data in the subreport.
Below is the code that I used to pass my parameter to the Crystal Report and then display it in PDF format to the end-user:Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
GenerateReport(Session("EmpId"))End Sub
Private Sub GenerateReport(ByVal EmpId As Integer)
Dim theReport As New ReportDocumentEnd Sub
theReport.FileName = "C:\myProject\Reports\myReport.rpt"
theReport.SetDatabaseLogon(PCON.APP.UserName, PCON.APP.Pass, PCON.APP.db_Server, PCON.APP.dbName)
'Set the required parameter for Crystal Report
theReport.SetParameterValue("@Id", EmpId)
'Now, present report in PDF format
theReport.ExportToHttpResponse ( ExportFormatType.PortableDocFormat, Response, False, "ExportedReport")