SSRS VS 2013 - Grouping and page breaks multiple different datasets - visual-studio-2013

I am looking to have a report repeat its data across multiple pages, group by / page break dependent on the project ID. This is simple enough with 1 tablix.
My issue is that I have 3 tablixes, each with their own data source due to different table structures. I am unable to union / join all 3 sets of data into 1 table. All 3 data sources can be linked by an project ID that is shared across all of the data for that project ID. What I am looking to do is repeat this report structure across multiple pages as defined by the project ID.
[Report Header]
[Tablix 1]
[Tablix 2]
[Tablix 3]
[Report Footer]
My current implementation uses a Rectangle that encases the 3 tablixes as they make up the "Report Data", however, there is no context to pass any sort of grouping parameter to children of the Rectangle.
Another thread recommends the potential use of sub-reports (How to apply parent group for multiple datasets in SSRS VS2008). I would like to avoid this design if possible due to the pitfalls it presents.

Related

Best Practice for Middle tier Data structure that combines multiple data sources

I have 4 queries from different sources that load all the needed KPIs that will be displayed on the UI. My format is essentially a simple table:
KPI
Client 1
Client 2
Client 3
kpi1
val1,1
val2,1
val3,1
kpi2
val1,2
val2,2
val3,2
kpi3
val1,3
val2,3
val3,3
But, the tricky part is that we have 20 or so separate tables/sections like this and the kpis are mixed up. i.e. kpi1 comes from data source 1, but kpi is from data source 2, then back to data source 1 for kpi3, etc. I want to just pull down the data once, and then populate all the various sections based on the definition of what the source is.
So, basically I need a layer of code that maps specific "rows" or "collections" to their source. What is the best practice for this "transformation layer"
I want to make sure it's easy to update kpi definitions, add new ones, etc. Also, a plus would be the ability to easily have a display attribute, so for instance kpi1 would be displayed as "Most Important KPI" and kpi2 could be displayed as "Interesting KPI".
I'm open to creating a Model object where each kpis is an attribute - it's just the mapping back to the source that's throwing me off a bit.
Thanks!

Global filters for different data sources (with common tables)

I am currently working on Tableau using 2 data sources using each a join of 2 tables (named A, B, C):
Data source 1: A-B
Data source 2: A-C
Basically, A contains the major information that I need and then I join data from B and C to get the extra information I need for each report I am doing.
I then do a dashboard that contains reports using the data source 1 and 2.
My problem now is that I am filtering this dashboard using a dimension in A and I would like it to apply to all worksheets (e.g. for those using data sources 1 and those using data source 2).
I thought that because A is the common table in all data sources, that using a dimension in A would be ok to filter everything but it seems that it is not the case.
Is there a way to fix this?
I read some forums about creating a parameter. However, the filtering I am doing is basically as follows: I want my users to choose 1 shop name. They can find it either by:
Typing the name in the 'Shop name' quick filter,
Using a combination of the quick filters 'Region' and 'country' to then get a drop down of 'Shop Name' that has a reduced amounts of shop names (easier when the user knows where the shop is but does not remember its exact name).
Using a parameter would not allow me to do this anymore since all of this is based on 'filtering the relevant values'.
Does anyone have any recommendations?

Crystal Report Groups Duplicate My Values

I'm trying create two groups from two different tables. I choose create new crystal report (As A blank report) then i create two groups like following images:
Then I'm choosing the table. I'm doing this once again with another table i want.
My Crystal report design look like this:
Now my Result is this:
But I want to take this result:(This result is painted)
Maybe it looks like easy for you, but i need a helping hand for solving this.
I choosed link options(Full inner join)
In Design Form
The grouping functionality within Crystal maintains the data relationship and makes it easier to read by not repeating the group text for each line item - if you group by "A", you will see all items, including the "group 2 duplicates" so long as they are in group A. Adding a second group will further refine the subset of results.
This is the intended and expected behavior for Crystal - SQL-level grouping is different and is used for aggregate functions, among other things.
If you are trying to create a multi-column report, look at this
Can I make a two column Crystal Report? - Under Section Expert, go to Details and click the box "format with Multiple Columns", then click Layout at the top and enter the detail size, in inches, as well as the gap between details. if you want your groups to continue in the additional columns, click the "Format groups with Multiple Column" checkbox.
If this does not satisfy your requirement, you may have to reevaluate the report requirements and the dataset limitations.

How to apply parent group for multiple datasets in SSRS VS2008

I have been battling this issue for days without success. I have a very tricky format of a report i need to achieve but the main thing is that all the datasets will need to be grouped by 1 parent. I'll attempt to explain...
Say we have dataset1, dataset2. Both have AccountNumber as common field(parent).
I need both datasets to be used in the format/layout of the report but grouped together by AccountNumber, something like this.
[Report Header Data]
[AccountNumber Group]
Dataset1
Dataset2
[end AccountNumber Group]
What is the best way to achieve this? The format of the report has been a major road block on grouping thus making me split the data into multiple datasets, group all them together by accountnumber and then create a custom format per dataset in the report. The flow of the report may be something like this
[Report Header Data]
[AccountNumber Group]
[tablix1]
Dataset1
[tablix1]
[tablix2]
Dataset2
[tablix2]
[end AccountNumber Group]
Looking forward to the discussion on this!
There are multiple ways to achieve this effect, and the best for your situation depends on the details of your report. So I'll just give some of the techniques I've used in the past:
Join the two datasets into one
Joining the datasets into one in your query is one of the simplest answers, and works across all versions of SSRS. It can make the SQL queries large, but it makes report layout simple.
Use the Lookup(...) function
SSRS 2008R2 added the Lookup(...) function, which can be used to access items in a second dataset. It's a little bit awkward to use, and requires a separate formula for every field to be accessed, but it is very powerful for retrieving a few fields from a different dataset.
Sub reports
Similar to the approach descibed in the original question, This lets you create a parent project with one tablix, and then place a subreport within. The subreport will be called multiple times, with the Grouping item as a parameter. Each run of the report should only return the report for that instance of the group. This can be very powerful, but maintenance is difficult: you have two places to change some thingss, and it can require manual tweaking to make sure columns line up correctly. The subreport will often be the fastest report to run, since it is getting called many times.
[NB: StackOverflow.com isn't the best place for discussions. The design of the site is set up to avoid discussion and aim towards question & answers, not discussion.]
I don't know if there's a perfect solution here.
Based on your description, (and it sounds like you're leaning in this direction already) you'll need a Dataset for each distinct AccountNumber, and create a new list or table based on this.
Once you have this set up you need to embed the different Dataset objects (i.e. tablix1, tablix2) in each row.
The main issue here is that you can't use multiple Datasets when embedding tablixes within tablixes, so this makes me think that you may need a subreport solution - this way the subreports can take an AccountNumber parameter and each use a different Dataset.
So something like:
[Report Header Data]
[AccountNumber Group]
[subreport1]
[tablix1]
Dataset1
[tablix1]
[subreport1]
[subreport2]
[tablix2]
Dataset2
[tablix2]
[subreport2]
[end AccountNumber Group]
This will repeat for each AccountNumber as required.
It's tough to say without knowing exactly what your data looks like, but in 2008R2 and above you can use Lookup and LookupSet to join Datasets, but that will be cumbersome for multiple values, even if you are running the correct edition.
Again, depending on your data, another option is adjacent groups, if you can manage to get the data in one Dataset... This would allow to have different groupings next to another under the AccountName group, but it's a long shot.
It would be great if we know the report data e.g Payslip, payslip with loan balance (ie Dataset 1 for payslip and Dataset 2 for loan).
Anyway, the format will depend on the required output of the report. i.e If your planning on produce calculation like sum in the report and if the result output will be per Dataset or for both dataset.
Assuming you will need sum calculations, if the calculation result will be per dataset, then option 2 is good, if the calculation result is for total (Dataset 1 + Dataset 2) then option 1 is better.
If no calculations or total result is required, either will do.

Custom sort within 1 instance of a crystal report group

Using vs2008 crystal reports .net c#
I have a report with multiple nested groups. I'm trying to find a way to do different or custom sort, or specify specific order within 1 instance of the groups printed on report
E.g report grouping as bellow. Report prints 2 lots of the nested groups as shown.
I want to specify the sort order ONLY for the first instance data coming under GroupHeader1
GroupHeader1 -------> ONLY want to specify customer order in this point only
GroupHeader2
GroupHeader3
Data
GroupFooter3
GroupFooter2
GroupFooter1
GroupHeader1
GroupHeader2
GroupHeader3
Data
GroupFooter3
GroupFooter2
GroupFooter1

Resources