SSRS multi tablix not allowing repeat of headers - reporting-services

So I have a dataset (a union for multiple tables [parts and labor]). This report is for multiple agencies/multiple invoices, Group by invoice and page breaking on invoice#.
Example
Tablix1
Row - Agency - repeatonnewpage, Keep with Group After
Row - Invoice- repeatonnewpage, Keep with Group After
Row - Date- repeatonnewpage, Keep with Group After
Tablix2 (is filtered to the parts)
Header Row
Detail Row - Item, Description (can be multiple lines)
Tablix3 (is filtered to labor)
Header Row
Detail Row - Item, Description (can be multiple lines)
More detail rows
My problem is when Tablix 2 or 3 has so much data it pushes the report to a new page the Tablix 1 Headers aren't repeating.. Is there any way to do this?

You may need to set the Header repeat on the Group rather than the table. The table paging got a little funky when Microsoft added Tablixs and they've never addressed the issue ("Works as designed").
There's another RepeatOnNewPage property that should be set on the GROUP in the groups Advanced Mode settings.
To get to the properties, select the table, click on the down carat to the right on the Column Groups and click on Advanced mode. Then Select the first header row in the Row Groups to bring up the properties and set the RepeatOnNewPage to True.

Related

Power BI Paginated Report with matrix visual, with values on rows, and one record per page

The below visual was taken from an existing Power BI report. The way it is setup is as follows:
Matrix visual
Attributes in values (no row or column attributes)
Values on rows
Value aggregation is using first record
Page filters on a single table record (all values in visual sourced from this table)
Is there a way to achieve the same visual in a Power BI paginated report?
I have not figured out a way to create a paginated report that allows the user to show values on the rows and toggle to the next page to get the next record.
Without seeing a sample of data I'll just have to offer a general approach.
Let's say you have an employee table and you dataset query returnd
EmpID
FirstName
LastName
Salary
1
Bob
Smith
30000
2
Mary
Scary
40000
3
Frank
Lee
50000
Add a table you your report. It will default to a single row in the "details" row group. Add 2 more rows inside the "details" row group by right-clicking then "Insert Row / Inside Group - Below".
Once you have three rows delete all columns except 1, in the first row select the First name, in the second rows, the last name and in the third row select the salary.
Now, either from the rowgroup panel under the main designer, or from a cell in the tablix, right-click then choose "Add Group / Parent Group"
In the dialogue, choose "EmpID" as the group column and optionally add a header (in your case you probably want this). You may find you get an additional column added, you can remove this (but NOT the group).
Now in the row groups panel under the main design window, right click your new parent gorup, choose properties, then on the "Page Breaks" tab, select "between instances".
That should do what you want

Can you link multiple tablixes on a key field in a single SSRS report?

I am creating a report in SSRS to show evaluation scores. It has three sections, and I need to link them all together on the PreceptorID field (2108 in this case). The top two sections are from the same query. I am filtering the results in each one to separate the counts because they have different column names. The third section is a subreport showing comments from evaluators. It also has the PreceptorID field in the data but is not displaying it. It has two parameters that should be populated by the main report query, but that does not appear to be happening. The report is returning all comments instead of only the ones with the matching PreceptorID.
This first image is from Crystal Reports showing how the finished product should look.
This is what I am getting from SSRS. It is showing counts for multiple people at the top. The counts in the middle are actually correct. They are all for the one person. The next person's counts are on the next page. The comments at the bottom are also not filtering on the one PreceptorID.
This image showing the subreport parameter that should be linking it back to the main query.
How can I tell all three sections to only return data for the same person on one page, and another person on the next page?
I would redesign the report structure slightly. This is only my personal preference, there are several ways to achieve this but I find this way easier to manage and maintain.
You'll need two subreports and a master report.
You already have the 2nd subreport so no extra work required there.
I would take you current report, strip out the link to the current subreport and change it so it only processes a single person (just like your existing sub report).
So SubReport1 will have the two tables from your current main report only. It will only accept a single person as a parameter (or pair of parameters in your case)
SubReport2 will be your current subreport. Again it only accepts a single person.
Next create a new report. This will be the master report.
Add a dataset that contains just enough info for list of people you want to report over. So the dataset query might be as simple as
SELECT PreceptorID, ClerkshipID FROM myTable ORDER BY PreceptorID
Add a table to this report and set it's dataset property to the dataset you just created.
Change the default (details) row group to group and order by whatever makes each record unique (maybe both the two columns listed above, may only one will be required, only you will know this).
Right-Click on the row header to the left of your table and do "Insert Row => Inside Group Below".
Remove all but one column
You should now have a table with 2 rows per group.
Right click the top cell in the group and do "Insert => Subreport", go to the subreport properties and point this to SubReport1 (or whatever you called it) and set the parameters has you have done previously.
Repeat this for second row, this time pointing to your second subreport.
In the row group properties, set page breaks to "Between each instance"
That should be it. This was done from memory so might not be 100% but based on the info in your question you should be able to work it out from here.
Things to check if this is not working
Open each subreport and test it by passing in parameters manually. Each subreport should only be returning data for a single person.
The master report should have a dataset that returns each person once i.e. if there are 10 people in total this dataset should only contain 10 rows.
The table in the master report should contain only two rows
Both rows must be EITHER within the same row group, or, if you have no other row groups, they will both be in the detail row group.
The report design should look something like this if you have a row group by person
or like this if you only have detail rows.
Finally, make sure the parameters you pass to your subreports are the Field values from your master report's dataset, NOT your master reports parameters.

SSRS - Merging cells of specific columns

I am developing a complex report in SSRS which should like below
Screenshot 1
output returned by stored proc have multiple rows of one User ID and based on that columns "Successful Orders -- Online - Total Orders", "Successful Orders -- Online - Total Amount" & likewise Retail - Total, Other - Total columns cells should be merged based on respective User Id.
I have used tablix control and tried adding grouping over columns which needs to be merged but it is not working as expected. in order to group I am setting Sum of returned Value in cell but yet no luck.
Can you please provide me some pointers in order to achieve whats expected. please let me know if you need more information
output after adding nested tablix
ScreenShot 2
also, distorted output with inner tablix. borders are causing issues
ScreenShot 3
Try placing a tablix in the cells containing the multiple rows to display them. Basically, you need to switch your approach from "How do I merge these cells?" to "How do I split these cells." Set up your grouping at the level you want your totals and then in each of the columns where you want the details displayed, add a tablix to display the details. You'll need to play with the grouping a bit to get it display correctly.
More details:
The sample you provided above should be one group level row, not multiple detail level rows. Add your group to that Tablix and the summaries you want for your Total columns. Then Merge each of the "Mode" and "Count" column pairs and insert a Tablix into that merged cell with the same grouping as the row with the Totals, but with only the Details row displayed (don't add group header or footer and delete the blank row and summary column that automatically gets added). Now just set your field values for Mode and Count and adjust your column widths to match the headings.
Here's a REALLY simple report that displays a Plant and the employees associated with that plant. This is the top level where you Totals group would go. The next image is the "inner" part, where you would add in another Tablix with the same group(s), but only the details displayed.
This is super simple example and you may need to include additional levels of grouping to match your report, but the fundamentals still the same - an "outer" Tablix with an "inner" Tablix with matching group(s).
There's a lot you can do with this approach by manipulating the groups, hiding/displaying different groups or even hiding the details and displaying subtotals.

Visual Studio Reporting Service Reports 2008

I am trying to generate a report that has 2 lines per record(or row) returned by the query. Simply the first row will hold certain fields but before it returns the next row/record..it generates a subrow as you may call it that holds an additional field. Is this possible? I have another idea of doing this and it would be to just add the extra field on the end of the row and wrap the row to fit on the page thus making it appear 2 lines per record/row returned.
I'm a total noob when it comes to using tablix and these reports so details would be great!
In the report designer, right-click on the detail row header (the gray area, should have 3 horizontal lines), and select Insert Row -> Inside Group (either above or below, depending on where you want the row).
This will add a new row to the current group, with the current group being your detail rows. You can then add fields and text to the second row, and both will show up for each dataset record when the report is run.

Exclude hidden table row from total

I've created a table with a group filter so some values stay hidden.
However, the row that shows the sum() of the above values, still counts the filtered values.
Usually I would apply the filter to the query, but I'm also using this same dataset in other tables on the same report so that's not an option.
Am I missing something here, or is this a flaw in MS Reporting Services?
This appears to be a "feature" of SSRS, apparently because it calculates values in table headers and footers before rendering the detail section of a data table.
One way around this would be to add a derived Boolean column to your dataset (assuming your data source is SQL Server, using a CASE statement or similar) showing whether the row should be excluded from the table where the filter is required.
You can then change your table filter to check the indicator, and use a expression to carry out a conditional sum to aggregate the correct total. Something like
=SUM(Iif(Fields!ExcludeRow.Value = True,0,Fields!ValueToSum.Value))
It's more of a question than answer...
How to resolve this issue if you know whether the row is hidden or not ONLY at the Row Group level?
i.e. if you're filtering on the totals by this Row Group, i.e. you cannot have a field indicating if Row is excluded or not in a dataset.
ex: I have AR Aging report which has totals per months, patients. I need to filter out negative totals per patients (Patient row group), but I have column groups as well - per month, so my dataset cannot be per-patient granularity and therefore, the only place SSRS can decide whether to hide or show the row is on the Row Group level...
I had the same issue but I had too many column totals where to enter the Iif().
I resolved it by removing the filter from the group and putting the filter into the Tablix Properties dialog box (Select Tablix, Right-click the top left corner grey box and choose Tablixc Properties).