SSRS grouping - dataset values in header and footer - reporting-services

Been pulling my hair out over an issue in SSRS. I"m converting Crystal reports to SSRS. What I have is a Dataset in a table in my detail area of my SSRS report, grouping on a certain field, displays data and summaries by group, no problem. What i need to have however, is data from that same group in the page header and footer, sometimes certain values as a summation of a numerical value from the dataset for that same group. When I attempt this (i.e. = Sum(Fields!payment_amt.Value, "DataSet1"), I get the summation of that value for the entire dataset, not just for the group in question. I need it for just the group. in the page header and footer. Likewise doing something like First(Fields!columnname.Value, "DataSet1") will only display the initial value of the comlumname for the dataset, and does not page to the next value in the grouping as I scroll through the pages
SSRS will not allow you to put a table or subreport in the header or footer, so i cannot simulate the data retrieval in the header and footer to match the specified grouping in the detail area. It seems Crystal Reports and other report tools can handle something like this just fine, with sort of "free form" in the headers and footers, which display the proper data in the page headers and footers base on the specified groupings.
SSRS seems to rigid with requiring the Table Layout for datasets for grouping, not allowing for free form style. is there a way around this?

Without seeing exactly what you are trying to achieve I can't give a specific answer but you can reference textbox names including the textboxes that make up your tablix.
So, if you have a tablix and one of the columns showed, say, an account balance. Click the cell in question and get it's name from the properties window. If it's called, say Textbox99 then in your header you can refernce is with something like
=FIRST(ReportItems!TextBox99.Value)
Other types of aggregations are available..

Related

Subreport as a header in main report (with page numbering)

I'm facing an odd issue: I'm going to create lots of reports using reporting services (SSRS) and one request was to create a subreport that will be shown as a header in main report. I've come across two main problems:
It is not possible to insert subreports into report headers. I thought of a possible workaround and just create a subreport without header and then insert subreport on top of body in main report. But then I faced another problem:
My header contains a logo, title and page number. However, function for page numbering cannot be used in report body, only in header.
Is there any alternative? Or should i just add a header to each report instead of trying to create a subreport for the header?
You can start by using a report with the header as a template. You would start with this whenever you make a new report. That at least eliminates the need to recreate it each time.
If you do want to be able to manage the headers dynamically, you can use a data-driven approach. Almost all of the properties for images and text boxes can be defined with expressions. And the expressions can refer to a dataset. In other words, you can store all of your preferences in a table. Your header template would include a dataset that brings in all the settings. Then you can use expressions to define how the header will look.
By doing this, you would be able to adjust the image, font size, etc. in all the headers at once just by changing a value in your table. Obviously there is some overhead with setting up the template this way, but it has a negligible performance impact and gives you more power to manage the header dynamically.

Table of Contents with Page Numbers in SSRS

I have been researching how to do this. It looks like I can name the DocumentMapLabel for a matrix item, in an SSRS report. I can then create basically a hyperlink to that matrix, in another item (such as another cell in another matrix). What I can't seem to figure out, is how to get the dynamic page number to also be computed. It would seem if you could have page numbers in the footer, then SSRS is capable of calculating a page number. I want to get the page number, that the beginning of a matrix or tablix starts at.
Is this something that can be done?
Thanks!

Repeat multiple charts on each page of subreport

I've a SSRS page which has header, two charts with different datasets and a subreport below charts.
When I run the page and drill down (I click on one of the bars of chart, it calls itself) and data populates in subreport which spans multiple pages.
My problem is I want to repeat those charts on each page. I've searched and tried a lot However nothing worked forme.
How can I repeat charts in multiple pages of subreport? Please note that I've got charts with different data sets and that subreport is used at multiple places.
Thanks for the reply mike.
I believe it can not be achieved using subreports. hence, i embedded that subreport tablix into report and did as suggested by mike(charts went into header row).
Since tablix accepts only single dataset, i created a big dataset that has all the fields for two charts and data and applied required settings to get the job done.
It worked for me(at least to get the job done.).
I had a report that after each record (customer), I put a page break so that each record got its own numbers in one page. I also wanted to add a graph specific to only that customer. So i added the graphs into a table. In the table where my graphs were place, I added a parent group group - the same group as my data and I checked that the table also had the page break on the same group. This separated each record into a page each and also added the graphs to its corresponding record.
I would try to wrap the two charts and subreport inside a tablix. The dataset for the tablix would be one that returns a single row.
The two charts would go into the header row(s). The subreport would go in the Detail row.
Row and Column sizes need to be expanded to fit the chart and subreport sizes. There may be only one or two Columns depending on your layout.
Then I would use the dreaded "Advanced Mode" technique to get the header row(s) to repeat on each page, e.g.
http://blogs.msdn.com/b/robertbruckner/archive/2008/10/13/repeat-header-and-visible-fixed-header-table.aspx

Tablix header not repeating on new page, when subreport causes page break

I've been fighting with SSRS for too long now on what should be a simple matter. I'm hoping someone can help me see a solution.
I have a report which has a number of profiles, and each profile has a large number of data sections. The data sections (various tables and charts) are not related to each other in any way other than that they "key" back to the parent profile id.
The goal (which seems simple) is to have a header on each page with the profile information, and then have the data sections (each formatted completely differently) laid out.
The first problem we encountered was that for some reason SSRS2008 does not allow a tablix cell to contain another tablix with a different dataset (why it can't just require a filter based on the parent grouping is beyond me). The recommended workaround for this shortcoming is to either combine all data into a giant dataset (not possible here, data sections are too numerous and varied) or to embed subreports and pass in the parameters. While option number two increases the "work" needed to print a large number of profiles, we proceeded to implement this and it does work.
The problem comes in on the main tablix (the one containing the subreports) that has a static row header group set with "RepeatOnNewPage = true". This setting allows the header to show on every page as desired... except for subreports the span multiple pages, where the header is incorrectly ommitted.
For some reason, when the subreport spans multiple pages, the header of the parent tablix is not repeated! This is driving me insane as it would seem that a couple bad design decisions in SSRS has put me in a situation where I can't create the report I want... headers works without subreports, but I need subreports in order to "join" the data sections to the profile.
This would seem to be a simple and common requirement... after all, it's a report that is being migrated from a decades old reporting system. I've scoured StackOverflow and Google without success... I've seem a number of questions/answers about page breaks, but nothing that suggests a solution to this problem with subreports.
I'm posting this in case I'm missing something. If anyone has any suggestions at all, it would be much appreciated.
A very clean and simple way to repeat the column header on each page
http://www.a2zmenu.com/Blogs/BI/Tablix-headers-not-repeating-in-SSRS-2008.aspx
We've solved our problem... although not in the most ideal way.
The Page Header (of the "master" report, not the subreports) seems to be the only way to consistently have a header section.
We implemented a solution based in large part on this blog posting:
Maintaining State in Reporting Services 2008
We modified slightly from the blog post, removing "id" from the methods and including a GUID to ensure the report values are not mixed up even if the user runs several copies of the report at the same time. (When using shared variables, remember that they are global to the report running across execution instances and across users on the report server, so a lot of care needs to be taken when they are used!)
In the report body we have a hidden text block that calls:
=Code.SetValue("xxx",Fields!Field1.Value) & Code.SetValue("yyy",Fields!Field2.Value)
and in the report page header we reference these as (for example):
=Code.GetValue("xxx")
This works because the body is calculated before the page header, even for Page 1.
Still, in the end it is a hack for something that should be in Microsoft's product, given that they have poured years of development into this product! Why we cannot have nested tablix's and easier to use headers is beyond me... again this is upgrading a report from a program from the early 90's which did all this without problem. At the very least, give us report variables that can be retrieved and set as the report is processed!
Regardless, things are as they are... we've tested the solution with shared variables and it seems to be working very well. We're going to run stress tests to make sure it's implemented correctly, I'll post something here if we find any further problems.
(And if anyone knows of some other way to get consistent header rows on pages, even when there are detail rows with large heights, please share...)
We have faced exactly the same problem during implementation of customer demands on SSRS Reports,
And did try a lot of things which all of them resulted with failure.
In our case,
Main Report has 4 subreport. Each SubReport should be started in new page. And also when new subreport begins, page header should be changed dynamically based on Subreport in body in current page.
Also one of SubReports which was SubReport3 has another case. Basically Main Report was running based on Dealer level. But Customer wants SubReport3 to run for each SubDealer related with #Dealer parameter. Also Customer wants to see each SubDealer data started in New page inside SubReport3.
As a result, we found different workaround as follows.
We created Page Header to Main Report. (Report Menu -> Add Page Header)(As #codinginthevoid said it is most consistent way)
We putted 4 subreports inside separate tablix. We added new column to each tablix. That column in each tablix visiblity = false, width of that column can be as small as possible, then created placeholder inside of that column, wroted down expression as follows:
If expression is in Tablix1, expression was ="Tablix1", if in Tablix2 then "Tablix2" and etc.
Then started design page header for Tablix1, each report item in pageheader that was putted for Tablix1 has visibility expression as follows:
=ReportItems!Tablix1_HiddenTextbox1.Value IS NOTHING
then applied same thing for Tablix2 and etc.
In the end, there were lots of textbox in PageHeader of report and some of them position was completely same, overlapped, But when reports is being rendered, each of those textboxes is being shown it is related page with related subreport.
I have encountered the same problem as well. What I found was that the way to solve the issue was to de-normalise the data, adding a 'Record Type' field to identify whether the row was a parent or a child.
There were two sub-tables in my tablix, both displaying detail data linked to the outer grouping. If I set the headers of the sub-tables to repeat on every page (using the Advanced arrow > Static Properties > KeepTogether = True, KeepWithGroup = After, RepeatOnNewPage = True) then one of the sub-tables would display correctly, however the parent table's repeating header would just disappear.
To keep a long story short, this was a massively annoying problem to solve. The solution is simple, it worked for me, but may not work for everyone.
Linked below is a SSRS2008 example RDL that connects to localhost and has an example of the problem I had and also the solution I implemented. Please feel free to use it if you find it useful!
(I would've posted it on here but Stack Overflow fails for code blocks it seems)
http://www.sqlservercentral.com/Forums/Topic1111567-1633-1.aspx?Update=1

How do I shows column headers of main report on each page when subreport renders on more than one pages

I have few subreports in a sql main report(.rdl file) using VS/SSRS 2008.
The subreports start approximately on the middle of the page in the main report detail section. I have one group in main report, shows header information and pass one parameter - ReportID to each subreport.
I also have checked both:
Row Headers – “Repeat header rows on each page” and
Column Headers – “Repeat header columns on each page”
on General tab of Tablix properties of the main report.
If I have few detail lines in the subreport, so that all can be rendered on page one, everything is ok.
If I have more detail lines in the subreport so that it's not possible to print all on one page, the subreport renders from the fist page and moves on to page two, three and so on.
When I have more than one page of data in the subreport, it is also started on page one, and continues renders on second page and so on...
However, it doesn't show the main report's column/row headers on subsequent pages of the subreports?
I've noticed that when next item/ReportID starts in my main report group, it prints column header only on the first page but not any subsequent page and so on...
I also tried to check only ONE, either
Row Headers – “Repeat header rows on each page” OR
Column Headers – “Repeat header columns on each page”
on general tab of Tablix properties of the main report BUT didn’t work?
Any ideas how to print header info on each page when subreport has more than one page data?
Pagination is always fun in SSRS.
Have you looked at the page size/interactive of the subreport? This may stop the subreport paging, but I don't know if it's what you want.
An older article on pagination
And a newer one
Presently I am encountering the same problem. In a previous SSRS report we got it to work by putting our tablix inside a single-cell list item so that the headers were repeated. Now I am working on a different report, and when I try the same thing I'm getting this error:
[rsInvalidDetailDataGrouping] The tablix ‘tablixOpportunitySummary’ has a detail member with inner members. Detail members can only contain static inner members.
I've searched extensively, but this is the only link which indicates an known problem in SSRS. At the time of this post it contained 4 workarounds:
https://connect.microsoft.com/SQLServer/feedback/details/337720/katmai-reporting-services-2008-tablix-control-repeat-column-headers-does-not-work#
A little late, but I think this is what you are looking for:
You need to go to tablix properties > General and check the option Keep header visible while scrolling. Then go to column/row groups in the advanced mode, chose your static row and set the Fixed Data mode to True, Repeat on new page to True and Keep with group to After.
Here is probably the best reference: Here