Add a Drill down to secondary report in Report Builder - reporting-services

I have written two reports in Report Builder. both reports use data from a property table so have unique identifiers eg Property ID.
I am trying to create a drill down from report A so that when you click on a row, it will open up a sub report that will show data from the sub report (Report B) that is specific to the property.
Both reports have the unique identifier EG. Property ID.
I can see how to add a sub report by going to Text box properties, selecting "Action" the selecting "Go to report" but that then opens up the complete report showing numerous properties rather than just the property that I click on.
My question is therfore how do I add a drill down to a second report that only shows the data if the Property ID's match?
I can't seem to find any guides online for this.
Thanks

You need to add a parameter in the properties of the Action.
The name should be the name of the parameter in the report you are linking to. The Value would be that Property ID you have. This way the sub-report will have the parameter value populated as soon as it loads. You can even choose to make it hidden at that point.

Related

SSRS Create As Many Tables As Needed (Using One Dataset) Based on a DataSet Field

I have a query that returns relevant data about inspectors and how long it takes them to respond to issues. The only parameters are a BeginDate and EndDate so for any given date range there could be anywhere from 0 to 100 inspectors.
I am using only one dataset and it contains an "Inspector" field that I'm hoping can be used as a filter to create as many tables as there are inspectors.
I know you can set filters on tables but from my (limited) SSRS knowledge, you must already have the tables created and the filters are typically hard-coded. What I need, is some way for the report to see how many Inspectors there are in the dataset and group those records into their own tables, repeating the same one created tablix over and over as needed.
This is being done strictly in SSRS 2012, not using a ReportViewer where back-end code could help me out unfortunately...
I don't have any code examples to provide, like I said I know you can do filtering but I am at a loss when it comes to doing something like this dynamically based on data... Sorry.
Depending on the report design you could either...
Single report with grouping
1. Create a single tablix.
2. Create a row group by Inspector and then add whatever fields you need to the details section.
3. You can optionally set page breaks between instances of your Inspector rowgroup from the rowgroup properties.
Sub report method
1. Create a subreport that accepts a parameter (InspectorID for example).
2. In the subreport filter the dataset using the parameter passed in so it only return data for a single inspector.
3. Add whatever controls you need to the report to handle a single Inspector
4. Create a main report
5. Add a dataset that gives you a simple distinct list of Inspectors, this will be used to pass parameters to the subreport.
Lets assume it just contains a list of InspectorIDs.
6. Add a list control to the report and set it's dataset property to the dataset that contains your list of InspectorIDs
7. Right-click in the list control's 'cell' and insert a subreport.
8. Set the subreport property to the subreport you created earlier and set that parmameter IsnpectorID to your InpsectorID field.
This will produce a subreport for each instance of inspector it finds.
Sorry about the format of this answer, in a rush!

Generate single report for multiple user using SSRS

I need to create student certificate using SSRS. I created new .rdl file did designed and associated with data source.
It works for single student as expected. But it does not creates report with multiple certificate while my data source returns multiple student details.
I am new for SSRS, please help me out to achieve this.
If you want to generate a certificate for each row of your dataset in the same report, you can do this with a tablix:
Add a Tablix to you your report that lists your dataset data
Drag a Rectangle into one of the Details row cells
Make the cell you dragged the Rectangle into large enough to hold all your
certificate report items
Select all your certificate items and move them into the Rectangle
Update any references to your dataset to not include a 'scope'
ie: Change =sum(Fields!ColName.Value, "Your Dataset") to =sum(Fields!ColName.Value)
Run the report
You should now have a certificate for each row in your dataset.
If you want to export multiple separate certificates, you will need to set up a data driven subscription on your report, that runs it once for each row of a returned dataset. Obviously you will need to adjust your report to be able to receive which student to generate the certificate for as a parameter.
Another way is.. if your data set is returning one row per student, then all you need to do you on your tablix is to add a parent row group.. group on StudentID.. or something unique per record.. go to group properties and add a page break at end of group. This should generate one certificate page per student..
You may need to adjust group headings and footer and things like that appear.. You will figure it out... alternatively.. watch a youtube video on how to do a basic ssrs report.
I have a subreport call StudentSub.rdl. This is linked with DataSet (stored procedure) Sp_GetStudentName(#ClassNo int). This works fine it gives always only one certificate.
Since I wanted to generate class wise certifiacte, in that case I wanted to get muliple report page wise in one PDF file. Followed below steps:
Created new RDL file called StudentReports.rdl
Linked with same data set stored procedure Sp_GetStudentName.
Drag a table from tool box to design body.
Set visibility False for table Header and some columns except one td.
Right clicked in that box (td) and inserted sub report
Right clicked sub report properties selected StudentSub subreport.
In the sub report properties added parameter ClassNo then clicked Ok.
Now When I am previewing this StudentReports by passing class no. I am getting correct number of pages.
Hope this will help others.
Thanks!

SSRS Create Tabs Dynamically

I've created many SSRS reports with multiple tabs, and am able to name the tabs at will using the page break/page name section of the properties window for a given tablix.
What I'm trying to solve for now, and can't find any good answers on the web for, is to create new tabs based on the result of my dataset.
The simplest example of which would be a new tab for each year of data, so now that we are in 2017 I would expect the report to add in a new tab for 2017 data (this is just a hypothetical example).
Is this possible in SSRS-2014, or do I have to settle for manual updates/additions every time I want a new tab?
You can do this. What you need to do is put the controls in the body of your report into a List control. In the Details group properties of that List control, group by year and set it up to page break between each group.
The basic steps are in the answer here below.
Create a new report with an empty body.
Add the Data Source(s), Parameter(s), and Dataset(s) that are needed. Make sure to include Year in your main dataset.
Add a List object to the body. Drag and drop it into the body from the Toolbox.
Set the Dataset for the list to the main data that has the year in it.
In the Row Groups pane of the Visual Studio report designer, right click on the Details row, and choose Group Properties. On the General page, click the Add button under Group expressions, choose Year from the Group on dropdown. This assumes you are getting this in the data.
While in the same dialog, go to the Page Breaks page and check the Between each instance of a group option. Click OK.
Add a Tablix inside the List. This is what will show your data.
Add some fields to the Tablix.
Run the report.
If your data returned information across more than one year, upon export to Excel, you will have one sheet for each year.
To set the sheet labels, you set the PageName property on the List detail properties pane.
Click the List control
In the Row Groups pane of the Visual Studio report designer, click on the Details row
Find the Page Name property in the Properties Pane, and set the expression to the Year value from the dataset =Fields!Year.Value
Now the sheets should be labeled with the year.
Per alejandro zuleta's comment, Set the desired group properties to page break between each instance of the group, when the report renders to excel it should interpret this as a sheet break.
If your group is dynamic, so too will the number of sheets.
You may also consider having a nested table (one table inside the other) where the "parent" table has no header and a single group (and cell) that controls your pagination. for instance; in your hypothetical, you could set the grouping to be something like =YEAR(fields!date.Value). then the "child" table contains the headers and groups that make up the report.

Create report base one number of records dynamically in SSRS

Let's say I have the following data:
In my SSRS report I have a parameter that prompts for MainID.
Now If I put MainID as 1, I should get one report. If I put MainID as 6, I should get 3 reports. Is there a way I can generate these reports dynamically using SSRS? Thanks.
I would approach this by creating a report that uses a List control, and has a page break between each item that you use to group by within that List. One report, a different page for each item of interest, SubID in this case.
Create a new report with an empty body.
Add the Data Source(s), Parameter(s), and Dataset(s) that are needed.
Add a List object to the body. Drag and drop it into the body from the Toolbox.
Set the Dataset for the list to the one you are using to return the data you have listed in your question.
In the Row Groups pane of the Visual Studio report designer, right click on the Details row, and choose Group Properties. On the General page, click the Add button under Group expressions, choose SubID from the Group on dropdown.
While in the same dialog, go to the Page Breaks page and check the Between each instance of a group option. Click OK.
Add a Tablix inside the List. This is what will show your data.
Add some fields to the Tablix. Add Detail and Notes, for no good reason on my part.
Run the report. If you have setup the data source and data set to properly run and filter base on your parameters, you should see something. Maybe an empty report.
Now (based on the data you provided), if you choose 1 for your MainID parameter, the report will display one page, but if you choose 6, you will get 3 page3, or however many records there are related to the parameter value for MainID in the database.
One report, multiple pages depending on the parameter/data. It's not a 3 different reports solutions, but something that could work for your situation.

Add a Filter to SSRS

I need to add a filter to a Report, that within anotherreport, the filtered results appear in the drilldown report.
For example: An .rdl file displays the first report, in that report a link can be clicked to access another report (.rdl) file. The report that displays after clicking link should be filtered by option selected from the first report(.rdl).
How could this be done? My thought that two datasets in each report could provide the information for the filter, however the filter expression is not valid this way...? I know this may not be the best way to do this.
So creating a drilldown report would be more acceptable. Creating one report and including a dataset with it by setting parameters to be called in the drilldown.
Does there need to be two datasets for each report to do this? I was assuming that the filter expression be written to do this: Field!.name.value AND Field!.name.value, etc to the whatever value I need to compare to or by.
Could this be a shared dataset to do this?
I was able to solve or partially solve this. I created a new report, with a query with the necessary columns that I needed in report 2. The drillthrough report(report 2) is linked from a textbox from a report allowing a user to view the information they need by clicking a link that displays the new report(passing the parameters from report 2 to the new report). If anyone has trouble with this, the simplest way would be to create one report and pass parameters to report two with parameters created from whatever query you want to use that has the values you want as columns in the report.