I have a matrix report in SSRS 2005, and the rows have certain sections. Imagine along the left a series of
1 $100
2 $400
3 $150
4 $650
5 $500
6 $400
7 $900
And I want some rows to be able to be hidden. For example, row 7 are totals of row 5 and 6, so I’d want to +/- next to row 7 that will show/hide rows 5 and 6. (Note that I don’t calculate these totals, they were done by an accountant and it is important that I use the values in the database and don’t calculate the totals myself.)
Now I have this “parent/child” relationship in the database, and I could add that as a group on the row
4 1 $100
4 2 $400
4 3 $150
- 4 4 $650
7 5 $500
7 6 $400
- 7 7 $900
And then I could add the toggle to that first column, BUT I don’t want the values to be subtotaled when they are rolled up. I simply want rows 5/6 to disappear and only show row 7. Kind of new to SSRS so any suggestions would be great.
So with one group toggled:
+ 4 4 $650
7 5 $500
7 6 $400
- 7 7 $900
Other gorup toggled:
+ 4 4 $650
+ 7 7 $900
Etc.
4 1 $100
4 2 $400
4 3 $150
- 4 4 $650
+ 7 7 $900
How can I accomplish this such that I am not recalculating the parent rows(rows 4 and 7 in this example)?
If there is a free web control that can accomplish this in ASP.NET I’d be glad to hear about it as well. I have a sinking feeling that I’m going to have to write some AJAX myself to accomplish this. I kind of wondered if there was some hack to embed some javascript into the report that could accomplish this.
Effectively you have two problems:
You can do this with a standard table report, as follows:
You can do this in plain SQL (D is the Detail table and G is the Group table):
So what we are doing is getting all the rows which aren’t subtotals (that is, the rows where the ChildId is not a ParentId) and in the nested select we are also putting the subtotal on every detail line. Now, in the Group on the table, we can simply report the GroupTotal field from our dataset rather than an actual subtotal.
Create a group in your table. Here is where you report the GroupTotal just as a field, not as a total (although you could MAX or MIN it if you wanted to).
Right-click the detail group and click Edit. On the Visibility tab, check the Visibility can be toggled by another report item checkbox and select the textbox name of the first textbox of the group above. Set the Initial Visibility to either Visible or Hidden as required.
Off the top of my head and untested but you should get the idea.
Edit to explain layout better (Note: SQL above also edited to show descriptions)
I’m working with a table here, not a matrix.
Layout would look like as follows (first column shows what group you are on):
Group1 is set to Group on ParentId, only the header is displayed (no footer) and the ParentId Textbox on that group is called ParentIdGroup. Details Group has “Visibility can be toggled by another item” checked and “Report item” is set to ParentIdGroup.
I have mocked up this report now and it works as you describe – what looks like subtotals are actually database fields and the description shows on the group row.