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")