Wednesday, November 9, 2011
SubReports in Crystal Reports
In this example i am going to describe how to create SubReports in Crystal Reports or Crystal Reports SubReport in ASP.NET.
For this i have used two tables from MS SQL database named Employees and Projects.
Main Crystal Report is fetching data from both the tables and is grouped by Project Name
SubReport is used to display information about respective project and fetching data from Projects Table.
Schema for both the tables in shown below in images, create tables accordingly and add relevant data in it to start.
You can click on Images to Enlarge
To start , Create a new website in VS and right click on Solution Explorer and select Add new Item > Crystal Report. In the wizard window choose Using the Report Wizard radio button and Standard type in Choose an Expert section.
In next screen select Expand OLEDB(ADO) and Choose create new connection
Select Microsoft OLEDB Provider for SQL server and click next
In next screen check the Integrated security checkbox so that report doesn't ask for username and password Enter you SQL Server name and Select DataBase from the dropdown ,
In next window expand and locate your tables you want to use and add them in right pane
In next screen select the fields you want to display in main report and add them in right pane , in my case i am showing fields from two tables in main report
Now select the field which you want report to be grouped by ( in this example i m grouping report by Project Name)
Select the report style you want and finish the wizard
Now to add a subReport Right click in group header section (below Group #1 Name)
Choose Insert > SubReport , Place the ractangle where you want SubReport to be displayed. a wizard window will open prompltly
Enter report Name and click on report wizard buttonin next screen ,
Choose the table and fields you want to use in SubReport in next two screens and click on finish
Now Insert subReport window will open again , In this window click on Link Tab and select the field on which you want to filter SubReport or the ID of the record to show SubReport. I am using ProjectID in this example.
This is how design of report will look like
And this is how report preview will look
Save , build and rum the website.
Now if you don't want to show SubReport but want to put a hyperlink instead or want to create On-Demand SubReport then do these changes in the design of report
Right click on SubReport in Design View and select Format Object
In the window opened ,Go to SubReport tab, Change the SubReport name to text you want to show as hyperlink, Check the On-demand SubReport check box and click on ok
Now design of report will look like image below
Html source will go like this (AutoGenerated)
<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server"
AutoDataBind="True" Height="1039px"
ReportSourceID="CrystalReportSource1"
Width="901px" />
<CR:CrystalReportSource ID="CrystalReportSource1" runat="server">
<Report FileName="CrystalReport.rpt">
</Report>
</CR:CrystalReportSource>
Save, build and run the solution , this is how report will look like