SSRS dynamically shift columns on hide/show toggle - reporting-services

I'm using Microsoft Visual Studio 2017 to build an SSRS 2016 report. Is there a way to dynamically shift the columns in a table when you toggle with multiple groupings? I know I can change the visibility with a combination of the "InitialToggleState" and "ToggleItem" properties. However, doing this just leaves empty white space on the report and doesn't shift the columns.
Here is my current report:
and what it looks like when expanded:
Here is what I would like it to look like on load:
and what I would like it to look like when expanded:
Edit: To add further detail, field1-5 should only be shown when the parent has been toggled. When field1 below is collapsed, I would expect it to look like the image above again (field2 hidden).
Edit2: Would prefer not to add column groupings as suggested below as the data would then span across the headers. Some of my fields could return up to 8 values, I don't want to have 8 column headers in a grouping.

Related

SSRS 2005 Report layout displaying on Report Server differently than in VS preview

I created a simple SSRS 2005 report. It is a table with 2 columns. When I preview the report it looks great. I put it on the Report Server (Report Manager) and when it is displayed the width of the columns of the table are only as wide as the widest value. I want the column widths to be a fixed width. I also want the rows to have alternating colors. On the Report Server, only the 2nd column has the coloring.
I have tried setting the table column attribute 'CanGrow' to true. But the table is only as wide as the data. The column widths are set to 3.09167in and 3.55.
It seems that I cannot widen the table columns from their original widths.
If I add padding to the left and right margins the column data is wider but the row coloring is still incorrect.
Has anybody seen this problem before?
Update
Below are screen shots of what the report looks like when previewed in VS2005 and when it is displayed on the Report Server.
In Visual Studio it looks like this (which is what I want it to look like.)
This is what it looks like on the Report Manager:
This is the code that I use to alternate the row color on both columns but only the second one displays the green color:
= IIf(RowNumber(Nothing) Mod 2 = 0, "#BCDCBC", "Transparent")
If I add a third column, the alternating color works for the third column also but not for the first column.
In case anybody else has this problem this is how I worked around it...
To solve the report width problem I put the table inside a rectangle and made the rectangle the width I wanted the table to be and that was corrected.
I could not figure out why the alternating row color code would not work for the first column but for all others. So, I added a 'hack'. I added an additional column to be the first column with no heading and no data. Made it very small in width (0.03) so that is not too noticeable. That allowed the other columns to be correctly colored and the first one is not.

SSRS table with inside borders only - possible?

I want to add to a SSRS (RDLC) report in Visual Studio 2013 a table object (Tablix) that would have borders only inside the table (between rows only, I need no border between columns), but no outside borders, like in Excel does this button:
I have specified the Bottom BorderStyle of an element that was inside the Tablix column with following expression:
=IIF((RowNumber(Nothing) Mod 2)=1, "Dotted", "None")
given the fact that I have allways exactly 2 rows per page inside the Tablix.
I guess that universal formula would look something like this:
=IIF((RowNumber(Nothing) Mod numberOfRowsPerPage)=numberOfRowsPerPage-1, "Dotted", "None")
It should remove the last border line on the page. Though this solution needs to have fixed number of rows per page in the table.

ssrs 2008 : Do not want group header to appear for every group

I need to generate SSRS report as shown in the above picture (the top portion of the image got cut off but it has the header as shown below which should appear on only at top of each page).
HEADER is as below
Bin ItemNr Description QtyOnHand
My data output is as below which I need to use to generate report format as shown above.
![enter image description here][2]
Issues I am facing
I used 2 tablix. The first tablix has groupby on ItemNr and I show only if the record has binPriority equal to 0. I then added another tablix within first tablix to findout if the itemNumber count is >1 (else I hide this tablix). Here I printed rows where binPriority is <> 0.
I get the data output somewhat similar to what I wanted but the header row appears for every item (where binPrority is 0). I want it to appear only per page. So what I did was I set the row header within first tablix as invisible and added the textboxes within the page header. I guess this is not the way to do it but this is where I am so far).
Also when I export to PDF, I see blank lines between each item (See image below). To me this lines looks like the 2nd tablix which is hidden. The report format/display is perfect when I view it on the screen.
The report is set to print in landscape and all the margins are 0.
Please suggest how to achieve the above report format.
Update 1 : I have modified the question by removing some of the images that had live data.
I am marking this question as answered.
I modified the report by removing the 2nd tablix and using Grouping.

RDLC : No page break - four sub reports within table/tablix

I have a situation where i have to display four reports based on checkboxes. So user can select different combination from four reports.
My problem is page breaks. I have tried different options (see below) from which two options (option 1 and 2) does not give page breaks at all whether option 3 gives page breaks for each tablix regardless of you do not want to see that report. Report is giving empty page for each tablix no matter there is no data in that tablix to be displayed.
With option 3 if i select all reports to show then everything is perfect.
I have tried these options
Option 1 (page break does not work)
Main Tablix -> each row : all subreports within rectangle within each row of tablix
option 2 (page break does not work)
Main Tablix -> each row -> Another tablix with group by ID within each row of tablix and then subreport inside each tablix. And I applied page break end on each tablix.
option 3 (page break works but gives empty page for non selected reports)
A List group by ID -> within a single row of this list I have places four tablix group by ID for each subreport.
Option 3 works but gives empty page break for those reports which are not selected. For example from Four reports if you select last two reports to display then you will get two empty pages in the beginning of report and third report on third and fourth report on fourth page which is correct. I have tried hiding tablix using table hidden and group properties hidden but still getting page breaks.
Any help will be much appreciated.
I have resolved this issue. For those who are struggling with same kind of situation, here is my work around.
I placed one list box and then four tables in a row and i placed subreports within these tables. i didn't apply any page break here. I am only showing and hiding tables based on report selection here.
Trick is within subreports.
As there were lots of tables and groupings in each report so i placed one table at the end of the each subreport.
This table should only have one cell. I removed header and 2 extra columns which were not required. Select dataset for this table. I did not want to pass dummy empty dataset so I selected my dataset but I created grouping on a parameter which I was passing from parent report and it has value 1. So now this table will only display 1 empty row. Reduce the height of the table. Plus I removed the border of textbox inside the cell. I checked 'Page break at end' option. In the Hidden expression I used following code which checks if there is any report which is visible after this (current) report. If yes then do not hide this table mean you want page break otherwise hide it mean no page break.
=iif(Parameters!AddReport_2.Value,false
,iif(Parameters!AddReport_3.Value,false
,iif(Parameters!AddReport_4.Value,false
,true)))
This solution works for me.
I would love to hear for a better solution.

How do I make a column in a report wrap and/or break in multi-column report?

I have a report where I've specified the Columns property to 3.
I want the data I have from a single query to spread across these columns.
When I print the report however, I just get a single column that spans across multiple pages till the rows run out of data.
How do I tell rs that I want the data to wrap into the next two columns?
UPDATE: Ok, found a link on technet to give me a better explanation of multicolumns (e.g. newsletter style):
Multicolumn, newsletter-style reports
display report data down multiple
adjacent columns. A newsletter-style
layout applies to the entire report.
When you define more than one column
in a report, Report Designer
calculates the width of the columns in
the report, the width of the report,
and the width of the space between
columns based on the number of
columns. It then displays a reduced
design surface so that you can place
report items on the report that will
fit within the column. Note that the
layout of the entire report must be
placed on the reduced design surface.
Additional columns are displayed so
that you can verify that the number of
columns you defined will fit the page
size dimension. You can adjust page
size, padding, and margins to fit more
columns on the page.
Only PDF and Image renderers support
newsletter-style reports.
I still haven't quite figured out how to make the column wrap...but I'll look into it further on Monday.
I addressed my issue by:
Putting 3 Tablix in my SubReport
Adding a Count Aggregate in my SQL results
Doing % calculations in the Tablix filters
For example, Tablix one has a filter formula like this:
=IIF(Fields!MaxRowNumber.Value <= 10, 10, Fields!MaxRowNumber.Value * .4)
So, if only ten rows are returned, display those ten rows in column 1. If more than ten rows appear, then put 40% of the results in Tablix 1.
I do similar calculations for Tablix 2 and 3 to display the 30% in each Tablix respectively.
Feels like a bit of a hack...but it works.
So one approach is to use multiple tablix with a filter that checks RowNumber and accordingly displays particular records in each table.
The other way is called Newsletter-style report (link). This formatting is retained only when report is exported as PDF or Image. It can be previewed only when you select 'Print Layout' on the Preview tab in Visual Studio. Here is an example:
Create a new report with the foll. dataset: SELECT ID,NAME FROM TABLENAME
Add a new table to the report and select the ID and Name as columns
Click on the tablix and press F4 to edit the tablix properties. In the properties window, change the Size - set the width to 2in
Click on the report area outside the report page boundary and press F4 to edit the report properties. In the properties window, change the Column value to 3, and column spacing value to 0.1
On the report scroll to the right hand side, you will notice that there are 2 new columns (so totally 3 columns on the report - because you selected 3 in step 4 above). Now click on the margin at the start of the column 2 and pull it further to the left to bring it as close to the column 1. This is only to reduce the need for huge page size.
Right click on the report area outside the report page boundary and select Report Properties. Change the Page Size - Set the width to 10in
Preview the report. Now select the 'Print Layout' tab to see the result. This formatting is retained only when report is exported as PDF or Image.
As noted in points 5 and 6 - since the report body flows into multiple columns, you must ensure that the page size is at-least equal to -> ([Original report body size times the number of columns] + all the column spacing values). Otherwise it will look messy.