I am working for the Vanuatu government at the moment and there is a very specific reporting requirement. The report needs to generate a formal document ("statement") for students ("learners") who have achieved some courses ("components") of a full qualification but not the complete qualification.
The dataset consists of a list of learners and for each learner the list of components they have achieved.
The requirements that generate issues:
A border should be displayed around the page content.
The number of components vary per learner.
There is specific data at the top and at the bottom of the page. At the bottom of the page there is data here that is learner dependent.
There needs to be one page per learner (I can control this by using slightly different versions of this report that would work based on the number of components per learner.
The design I created for the report can be seen here. This is the design that should work for any learner who has passed 1 to 4 components.
However, this does not work, because, depending on the number of components the learner has achieved, the data at the bottom is pushed down.
I thought I might be able to solve this by putting the image at the background of the whole report per page, and then put a header and footer in with the data that is learner specific. But this does not work either because it is not possible it seems to have a background image that covers the whole report page, including a header and future.
And the other problem is that there is a learner specific number (the statement number) that should go in the future, and I don't think I can put dataset data like that in the footer.
I also thought of splitting the background image in 3 parts, one each for the header, footer and body. But then I run into the same problem because I still need to get the learner specific statement number in the footer.
Another solution was to maybe have a fixed set of rows (partly invisible) in the list of components, to force the height of this list, but this does not really work either, because some titles of the components will be longer than the width of the page and wrap and take up two lines of text. Some others may not. So I don't know the height of each component line.
Is this possible at all in SSRS? Any help would be greatly appreciated.
Try creating a rectangle in the space that will be taken by the components list.
Then cut the current text box containing your expression, click the rectangle then paste inside it. This will ensure that the rectangle is the container for the textbox.
Then, in Report Properties, set ConsumeContainerWhiteSpace to True. This should allow the textbox to grow within the rectangle
Related
I have an rdlc report in my application. The report looks good when seen on the web page, but when I choose the option of exporting to Excel, I get some columns merged in more than one cells. I don't want columns to be merged. How can I prevent this. I already saw this post, but the link provided in this post is not working.
Any help with this issue will be appreciated.
As the post you shared suggested, this is usually down to cells/textboxes not aligning in your report design.
SSRS will attempt to replicate the layout that you see in the report preview (or webpage in your case). To do this it will add additional columns to provide the correct spacing and then will merge cells that cross those boundaries.
Make sure that all your textboxes align with no horizontal gap etc. For example, if your report contains a table/matrix and a textbox with a title. Make sure that the title textbox starts and finishes exactly in line with a cell in the table/matrix.
Note that cells will still be merged if they cross the boundaries of columns (e.g. the title in this example, might be merged across several columns depending on it's width).
Sticking with our title scenario, if you need to stop it from merging under any circumstances then you could try this (untested).
Create two textboxes, one wide enough to fit the title in and another that is the same width as other data that shoudl be in the same column in the final excel output. For example, if you have a table with 6 columns, the first textbox will be the same size as those 6 columns but the smaller version will be aligned with the first table column only.
Set the location of both these textboxes to the same location (so they overlap).
Then in the hidden property set one to be hidden when Globals!RenderFormat = "EXCELOPENXML" and the other when this expression is not true. This way the short textbox will only get rendered when exporting to excel, and the logn one will only get rendered to screen.
Depending on version SSRS etc you will have to decide which render format(s) to check for.
See here for documentation on RenderFormat
https://learn.microsoft.com/en-us/sql/reporting-services/report-design/built-in-collections-built-in-globals-and-users-references-report-builder?view=sql-server-ver15
Having a report with 5 different tables and what i want is to have each of these tables starting at the top of a new page. These tables are currently in a rectangle each which has a hide/show expression. Surrounding these rectangles is a list which is doing the correct grouping for the tables and also doing page breaks after each group(3 groups in total: Association, Organization, and Type. There are 5 different types, one for each table(there's a filter on the tables).
When showing my report in regular preview mode there is no problem but when doing so in print layout preview I get the third table starting on the third page but not at the top and after that I dont know what is happening... all page breaks just stops working. Sometimes whole empty pages are rendered.
This is how the report layout looks like
This is some of the resulting pages (not in order)
Just so you know, I have been trying consumewhiteSpace, Checking the height and width on my report Height = 15,1cm and width 24cm and its just a horisontal A4 page.
The grey color is the list-rectangle. Why is it acting up like that and how do I make it work?
So it looks like the report is fixed. Don't really know what I did but I redid the report(like a houndred times before), really made sure that all the page breaks, filters, report margins and visibility conditions (not only in the tables visibility propery but also on every static row under advanced mode) were right. I made some table changes for example using stepped table instead of nested. And found some wrongs I had made previous considering the tables layout (guess everything has a purpos even hard work and long wait...).
Thanks for the help though!
I have a report in Access that is from a checklist form for closing down projects. When the report is loaded, depending on the project type, certain labels and their combo boxes are marked as not visible. This is done using VBA and the visible property of each control. I have noticed that the report still includes these combo boxes and labels as blank white space. Is there a way to remove the white space?
I have set the detail and the overall report to can grow and can shrink. I am thinking about possibly using sub-reports to do this but I am unsure if it will work.
Edit: Another solution I am thinking about is building several different reports and using an if statement for the project type to determine which report to open but this feels excessive to me. This solution would report in at least 5 separate reports.
Controls don't take space in Microsoft Access. They are positioned at a certain, predefined position, on a report of predefined size. There are little dynamic things about it (yes, nicomp is right, the CanGrow property makes it a tiny bit dynamic).
If you really want, you can move up all controls below a control you're hiding by the height of the control you're hiding, assuming controls take up the full width of the page. To do that, you can use something like the snippet below (iterate through all other controls):
If MyHiddenControl.Top < MyOtherControl.Top Then
MyOtherControl.Move MyOtherControl.Left, MyOtherControl.Top - MyHiddenControl.Height
End If
And if you want to do it properly, add margins for controls and resize the report detail section too.
If controls don't take up the full width, it's considerably more difficult to dynamically organize your report.
It seems so basic and surely resolved by SSRS 2014 SP1 but I can't find a way in Print Layout (for PDF ultimately, but this is simple display) to allow a tablix to render at the top of following pages when a text box displays above it on the first page (eg. address details which would not be wanted on every subsequent page filled by tablix results). This results in unprofessional wasted white space above the results on every page after the first.
The tablix seems "stuck" so it only starts on the page wherever you put it on the design layout (using Report Builder because SSDT not playing with VS2015, but same things should apply). That's when the text box above it naturally doesn't even display on the subsequent pages - why would it, it's done its job and is not repeateable! After all, it's not in a header.
Have set the textbox to CanShrink=true but its still holding the space (because it's content remains, fair enough).
Also tried hiding the textbox (and should be able to do this conditionally on subsequent pages) but whitespace is still there, which is odd and perhaps shows the real limitation.
Applied ConsumeContainerWhitespace=true on report level (you would have thought that would do the trick) but no joy.
Even put both textbox and tablix in a same Rectangle so they become "peers" and maybe control the whitespace better, but nope.
Would prefer the header to repeat and the textbox address to only be on the first page, but another annoying limitation is that for headers there's only a "PrintOnFirstPage" option, not one to print on first page only! Of course, a workaround for that like SSRS Report Builder - Only Show Header On First Page (With Page Numbers) is to move textbox into the body area and hide, but as noted, that still leaves the stupid whitespace on every subsequent page - d'oh!
Surely there's a way to resolve this basic requirement, or maybe I'm missing something obvious?
EDIT: Remembered I never had this problem before and realised it's now only because there are multiple Projects per Worker (sorry, not enough rep yet for pic). If I choose a parameter period with only one project, the line descriptions will continue on the top of any subsequent pages. Only if the tablix header group (Project: [TaskDesc] and Worker) changes does a new page start - but with the tablix at the original page 1 layout location (ie under the textbox), not at the top of the subsequent page where it should be. Hope this clarifies - looks like a bug, odd tablix behaviour, but maybe a workaround?
If you want a non-repeating TextBox, just make sure it's outside of a repeating report element. This means outside of a Tablix or Rectangle.
Just place the TextBox at the top of your page and place the Tablix/Rectangle below it. When the Tablix/Rectangle grows beyond the maximum page height, it will break and continue at the top of a new page.
If you simply think there is too much empty space at the top of the page, try fiddling around with the page margins.
My application is printing checks. In the client's paper stock, the "check" itself is at the bottom 3rd of an 8.5x11in sheet. The details that make up the check are on the top 2/3 of the sheet.
Now if I'm printing multiple checks in one go, I need the check to be essentially the page footer for my .rdlc, but that page footer must start at exactly the same vertical position on every page regardless of how many detail items are on the upper 2/3.
How is this accomplished with RDLC reports? I can easily solve the problem when the check is on the top 2/3 of the page because the table does not affect it's positioning. This one has me stumped.
If it helps, I am on SQL Server 2008.
Figured it out. Basically could use the page footer option (instead of table footer) in RDLC and put ReportItems! formulas in there. That worked fine for what I needed to do.