SSRS Tablix and Chart Filtering - reporting-services

I have a chart and matrix that shows records for a given date range. User wants to see the records for indidual months.If the user selects date range from January to April then the results would be 4 charts and 4 tablix based on month instead of single chart and single tablix that shows for all months. Could anyone please help me on how to do that. TIA

Create a list
Insert your existing Tablix/Matrix into the body of the list
Right click the Row header (grey box) of the List and on the General tab set the Group expression to group on the Month value, i.e.
=Month(Fields!myDate.Value)
Right click the Row header (grey box) of the List and on the Filters tab set two expressions.
Expression Operator Value
-------------------- -------- --------------------------
=Fields!myDate.Value >= =Parameters!StartDate.Value
=Fields!myDate.Value <= =Parameters!EndDate.Value
This approach will then take an output that looks like this (for all months)
When applied, and the parameters set so that StartDate = 01/Jan/2015 and EndDate = 28/Feb/2015, will look like this
Note how the data for each month appears separately.
Let me know if this approach works for you, or if you need any further assistance.

Related

SSRS Matrix columns show currrent month

I'm stuck with a problem in SSRS 2012 that maybe is very simple:
I have a matrix with a group row (employee) and a group column (last 12 months); the values are COUNT(practicesDone) - i.e. the amount of practices worked.
I want the matrix to show an extra column on the right (after all the columns of the months, and clearly outside the column group) with again the number of practices for the current month.
Is it possible to achieve that?
thank you in advance!
You can do this, it's pretty simple.
I have assumed that your dataset contains a column that has a date for each entry and that the data returned only covers 12 months so the same month would not appear for different years. If your data does have multiple years, look at the second expression below.
Right-click your month column and then to "Insert Column --> Outside Group - Right"
Now set the expression for the text box to
=COUNT(IIF(MONTH(Fields!myDateColumn.Value) = MONTH(TODAY()), 1, Nothing))
You could swap COUNT for SUM and it should do the same thing but either will work.
All we are doing here is comparing the all data in scope which, due to the placement of the text box means the scope is the entire rowgroup. Then for all that data, check if the month matches the current month, if it does set it to 1 is not set it to nothing then count/sum all results. Count conveniently ignores 'nothing'.
If you data covers more than 12 months then you can still do this but you'll have to add a bit more to handle years and months like this.
=COUNT(
IIF(
MONTH(Fields!myDateColumn.Value) = MONTH(TODAY())
AND YEAR(Fields!myDateColumn.Value) = YEAR(TODAY()),
1,
Nothing
)
)

Auto populate dates of the week Paginated reports

Good day
I am very very new two paginated reports so forgive me if this is a silly question
I have a report that displays values for Mondays to Fridays based on the date selected from a date picker.
So basically
You select a date (Example 24 Nov) and the following table is displayed based on values pulled from SQL.
Now my question is how do I display the dates of the weekdays too?
So if the date selected is Thursday 24 Nov, in the column headers under the week day names it should give the corresponding date i.e Monday-21/11/2022, Tuesday - 22/11/2022, etc.
Below is a little snippet of the data
So the date picker is based on the ReportingDate column. The rows of the matrix consist of Region and Country and the values are the sum of Monday-Friday.
Any guidance would be greatly appreciated.
Edit: The day names are not obtained via an expression in SSRS. They carry over from the column headers in the data set.
Assuming you have some expression to get the actual day name already, you can leave that bit as it is.
Now, double click the column header "cell"/textbox to get a cursor in there, then click at the end of the existing fields/expression.
Now just put a space in and then right-click and choose "Create Placeholder". The placeholder dialog will appear.
This placeholder acts almost like a separate textbox to you can put whatever you want in there, click the '[fc]' button next to the Value property and then set this to whatever you want, e.g. =Fields!ReportingDate.Value.
Now go to the "number" tab on the same dialog box and set the format to the required date format.
If you want to edit this later, just double click the cell again but this time right-click the placeholder and choose properties.
The other way of doing this would be to add another row to your header and set that to be the date instead but then you have to mess around removing borders etc., sometimes this can be easier if layout is an issue but you have a couple of options at least now.
I managed to figure it out with the help of the following post.
These are the steps I followed
Get the date of the first day of the current week (Sunday's date) using the formula explained in the link
DateAdd("d",1- DatePart("w", CDate(Parameters!ReportingDate.Value)), CDate(Parameters!ReportingDate.Value))
Use DateAdd to add the corresponding number of days to get to a required weekday. That is for Monday add 1, Tuesday add 2,...
DateAdd("d",1,DateAdd("d",1- DatePart("w", CDate(Parameters!ReportingDate.Value)), CDate(Parameters!ReportingDate.Value)))
Format datetime to date and add new line to insert date below day name
="Monday" + Environment.NewLine + FormatDateTime(DateAdd("d",1,DateAdd("d",1- DatePart("w", CDate(Parameters!ReportingDate.Value)), CDate(Parameters!ReportingDate.Value))), DateFormat.ShortDate)

RunningValue Column

I have a report that pulls a beginning inventory value and puts it in the header of the report - "Textbox12". Then in the report there is a column that tells me how many of that particular part has shipped out or been received that day and displays that as a total (may be a negative number if we send more out that we get). How do I keep a Running Value where the first row of the report starts with the beginning balance and adds the daily change in inventory? The thing that I cant figure out is how to start with the 'Report Item Value' which represents the daily beginning balance.
My inventory report
PART No 1: beginning balance - 12345 (Textbox12)
Daily change | Total in stock
+1 | 12345+1
-2 | 12346-2
0 | 12346+0
The daily change expression is also a formula that looks at inbound and outbound columns/values in the report and totals those if that matters.
I don't think you can reference a reportitem from a tablix cell due to the order items are processed. I think the header and footer are done last so you can reference a tablix cell from the header but not the other way around.
You don't say how you get the opening balance but you should be able to copy the expression from Tetxbox12 and use that plus the RunningValue() of the DailyChange column.
So you would end up with something like this
=MyTextBox12Expressionhere
+
RunningValue(Fields!DailyChange.Value, SUM, "myDataSetName")
If this does not help, show a sample of data, the structure of your dataset and the expression in Textbox12 and I can revise the answer.

how to seperate one matrix into showing data for this year and previous

I have a report where my source gives me data for multiple years. In my report data I have 2 parameters- 1 is Brand and 2 is Year. I have made one matrix which has 5 columns in it with a row group. I want to define the column in such a manner where i pass a year to the parameter say 2016, but it automatically returns me data for that and previous year.
I tried using expression in the column group header:
=MAX(Parameters!Year.Value) OR MAX(Parameter!Year.Value) - 1
and
=MAX(Parameters!Year.Value) OR MAX(Parameter!Year.Value) - 1
Image of what I currently have:
What I want to see it as:
EDIT:
Dataset Sample:
You can exclude of your tablix the values you don't need to show.
Go to Tablix Properties window / Filters tab.
In expression use something like this:
=Switch(
Parameters!Year.Value = Fields!Calendar_Year.Value, "Include",
Parameters!Year.Value-1 = Fields!Calendar_Year.Value, "Include",
true,"Exclude"
)
Select Text and Operator select =
In Value use this:
="Include"
If you set Calendar_Year in the column group it will works.
Let me know if this helps.

How do I create a interval of 7 days without 'w','week' or 'WeekOfYear'?

I am trying to sort data by the week it was created. I can not use 'w' in DateAdd, 'week' or 'WeekOfYear' without an error stating that function/expression is inaccessible.
What is the best way to create a substitute expression? I want the expression to group the dates based on the week it was created.
I am trying to replicate this:
http://imgur.com/Pk8YjUv
Based on the expected results you posted in the edition of your question I have reproduced the tablix.
I've used the following dataset:
I am supposing you are going to use a tablix component so I added this one with the following data arrangement.
In the Row Groups panel right click on date group.
In group properties, add a group expression and set this:
=DATEADD("d",7-DATEPART(DateInterval.Weekday,Fields!date.Value),Fields!date.Value)
Also in the tablix you have to set the same expression:
In the columns you want to sum you can use the Sum function or any aggregation function. I've used =Sum(Fields!value.Value) to Sum values within the same week.
This is the result it will preview:
Let me know if this was helpful.