Two subreports side by side in the same band - subreport

Is it possible to add two subreports (or maybe to concatenate another two reports) side by side (like two columns of a table) in the main report? Maybe also control each subreport's X position? I'm using dynamic jasper.

Related

SSRS Dynamic Reports for Key Value Pairs

I need to use SSRS to create many different reports, and I have been trying to find the best way for me to easily create them as need, and for users to navigate them and use them for their needs.
To give you and idea of the two sets of data I am dealing with:
EDI file from our customer
Raw data output from hardware configuration
Now the EDI data is fairly consistent, so these columns are static.
The hardware data is usually a massive list of different configuration. I receive them in different flat files formats and using SSIS or other tools I get the data into Key Value Pairs. Now in a report, I use matrix to keep EDI columns static, it matches with the hardware on serial number, and Hardware data pivots.
So the report does not break, and so I don't give the user too much information, it matches up on another table where I specify what keys I want to be columns.
Here is a small example of one of my reports:
The green columns are EDI, while the orange is the hardware.
My question is, is there a better way for me to be doing this? Some reports can get complicated like needing total for certain hardware (counting hardrive space, ram total etc.) which is difficult to do dynamically.
I have tried creating in reports in this fashion, with these parameters:
This way I can create the Key columns per project and user can select what report they want to run. The default is All Data.
Is there a better way for me to create these reports? SSRS really doesn't seem to play well with dynamic pivots.
Is there a better tool that will handle these reports dynamically, or let users pick and choose what they want to see in a report?
I can't visualise your data but if I understand correctly, you could have a dropdown list showing all the unique values that are in the column you are using in the column group. Set this to be multi-value and then simply have the WHERE clause read something like
SELECT * FROM myTable WHERE myColumnGroupField IN (#myColumnChoiceParameter)
This way the user could select whichever columns they would like.
You could extend this by adding another parameter that has some preset groups of columns (I think you might have one of these already if I understand correctly) that would set the default value of the main #myColumnChoiceParameter parameter.
If you want something more flexible then you might want to look at Power BI but depending on how you intend to deploy that might not be a simple option.
You cannot dynamically create columns in SSRS but you can control the visibility of the columns.
1) Create a list in table that contains the names of all the columns that yo want to toggle and include a column titled 'All'.
2) Create a parameter that is based on this table and make sure multi-select is turned on.
3) Right click on every column that you want to toggle, select visibility and then create a condition that checks if the user either selected All or selected the column from the parameter list.
4) Train users that by selecting and deselecting from the dropdown they control whats visible.

SSRS pagination options (KeepTogether, KeepWithGroup) not affecting printable output formats (PDF)

I have an SSRS report with a pretty simple overall structure, and I am trying to use the KeepTogether, KeepWithGroup, and RepeatOnNewPage properties of tablix members to control how groupings display on multiple pages.
Everything works beautifully in the web mode of the report, but printable formats like PDF and Word completely ignore these settings. They instead to appear to treat the report as one giant long page, and then insert their own pagination wherever they need to.
Here is what the tablix looks like:
And here are the row groupings (in advanced mode), with annotations for the properties I have set for them:
This is all on SQL Server 2012 SP 1 CU 16 (recognizing that there was presumably a bugfix for KeepTogether in CU1). What's the deal here?
You need to review your Column Groups as well I think (the logic is backwards I feel). Looks like you found the Advanced section in the grouping pane. The rows are on the left and columns on the right - try setting the keep together properties for the static column grouping items as well.

SSRS: Show images from multiple rows at once

From a database I get information about collaborators. The collaborators can have a different number of images. E.g. one collaborator has four images, another one only one. In this example I would get 5 rows in total. Four for the first collaborator, differing only in the image and one row for the other collaborator.
My report should treat all images belonging to the same collaborator as the same result row. So the first collaborator will have four images on its report and the other one only one. At the moment one report per row is created.
How can I tell SSRS that all rows which differ only in the image column belong together and how can I add these images to the report?
I must admit I haven't tried much yet because I don't know where to start. I've read about the previous() function (https://social.msdn.microsoft.com/Forums/sqlserver/en-US/397c92f5-e533-47be-9e07-56ea0b19f9a7/merge-data-from-multiple-rows-into-one-in-ssrs) and the instr() function (multiple images in SSRS Table Cell) but both are so far I see not what I need.
If necessary I guess I could merge the rows already in MSSQL to have one row per collaborator with comma separated images.
The images are not stored as file names but in binary form.
You should be able to utilize groupings to keep the images of the same collaborator together.

SSRS: Partial re-use of a MDX query? OR MDX as Parameter?

in Sql Server Reporting Services Report
is it possible to define a MDX query within a report, and then re-use it a bunch of times, but each time with different WHERE section.
i.e. the Members and SELECT section would be the same for each row (MTD.Count YTD.Count)
but, i'd want to filter it 10 different ways..
The only way i can think of doing this right now, is adding 10 datasets, each with a different WHERE section, but i'd like to re-use just one DS
ALTERNATIVELY
Another totally acceptable option would be to supply whole MDX queries to the report as parameters of some sort. My challenge is that my MDX queries are generated dynamically (including the # of actual queries), all of that is user driven. So is there a way i could supply n MDX queries to a report, and have it plug that into a matrix? One way i thought of doing this today, is to emit the whole RDL XML dynamically..
You can have the dataset using a few parameters like this:
SELECT
{
StrToSet(#rowAxisMdx)
} ON 0,
{
StrToSet(#columnAxisMdx)
} ON 1
FROM [Cube]
WHERE {
#StrToSet(#slicerAxisMdx)
}
It will be slow since you are using a lot of StrToSet functions, but it should work.
This is most likely my solution:
Subreports
Yep, subreports saved me here.. My actual goal was to repeat the same MDX query with a different WHERE section for each row. Sub reports are design for just that. You can define a matrix and bind it to a dataset. That dataset will determine how many rows of data your matrix will be populated it.
You can embed a subreport in a cell of your matrix, and pass it a parameter (in my case i am passing the whole WHERE filter, but you could make it more granular and only pass a field.
Then in your subreport you can display just one set of information based on a parameter which is passed in from parent report.
here are some more links
SubReports
Designing Reports with Custom MDX Queries

Dynamic selection of dataset in SSRS

I am going to design a report using SSRS 2005. Is it possible to have the selection of dataset done dynamically?
Let's say I am going to have two tables, where the first one is the summary and the second is the detail data. One of my parameters (with values Summary and Detail) will determine which version of the report is to be displayed. Can I have two different datasets, and while clicking the view report button in parameter view dialog (or before) set which dataset which will be used?
You can use the single data set by using switch statement some thing like this:
You can type this in data tab but the results can be seen only in preview tab, but not the data tab like regular queries.
=Switch(Parameters!ToDecide.Value = "Summary",
"Your query for Summary",
Parameters!ToDecide.Value = "Detail",
"Your query for Detail")
Make sure you don't have any excess spaces with in the query(not more than one space where needed)
Both the queries should return the values required by the Table in Layout.
You'll probably have to have 2 pairs of table contained in, say, a rectangle, and hide the unused one (at the container level). Or use subreports.
If you find a way to switch datasets, then you'll have to make sure that all columns are the same as well as making sure that any functions using the DataSet as a scope parameter are changed too... which makes me think it just isn't supported.
You might want to try using a single dataset and having a summary and detail data region (table, list, etc.) in the report, one of which is visible and one of which is not. In this scenario, the dataset is only evaluated once and you are still meet your requirement.
Hope this helps,
Bill
It would be easier to create and maintain if you have two separate tables and hide one or the other depending on the choice made.
I haven't tried this, but I think another possibility would be to use three reports: a container, a summary subreport, and a detail subreport. Switch between the subreports according to the choice.
There is a performance gotcha to the first implementation though. SSRS will try to fill every DataSet in the report when it loads, even ones that are not used in the report's output or by other DataSets or expressions. In other words, just because you're displaying the summary report, doesn't mean that you're not asking the database to fill out your detail data as well.
There is a workaround that can improve the performance a bit, but will still end up with a trip to the server. The hack is to set a flag parameter to determine whether or not the query should actually return any real results or if it should just return the columns you want.
You may try adding condition that depends on a cetain parameter to execute. Then from there, You may use different data set. Assuming that you'll use it on separate hidden tablix.

Resources