Placeholder value from a group field - reporting-services

I have a report where I did grouping by currency, and also I have added total by currency, so if I generate my report, the data related to each currency are sorted, and after each Currency Type set of rows I have the total of the currency
The hearder info (Textbox. and PlaceHolder values) are repeated to each currency
Also when I export to excel, I have adjusted the report to save the results of each currency on a different sheet, and having the sheet name renamed to Currency
My Problem is that in the header of the report I have a PlaceHolder that should display the currency.
However in the PlaceHolder expression, it only allow me to enter "=First(Fields!Currency1.Value, "dataSet")".
But when I generate the report it only shows the first currency "AED" even for data and sheets of other currency
How can I display the correct currency same as I did in excel sheet name for a placeholder expression?

I have bad news for you. You can't access the datasets in any way other than using functions such as First in the page header in SSRS, and there is no way to let the header "respond" to what's going on in the body.
Perhaps my suggestion in this other question can help you out as well. This comes down to not using a header but "faking" a header in the body. Not pretty, but it may work for your scenario.

I did find a solution:
Insert a Header in the report.
Drag Currency field from dataset into the header.
Edit the expression
Change "=First(Fields!Currency1.Value, "dataSet")" into "=First(ReportItems!Currency1.Value)"
Also note that the above only works only for the header, it doesnt work in a placeholder expression in a textbox
Regards

Oh, you are so close! You set yourself up for success when you made the page name dependent on the currency name.
Don't use anything from your dataset directly, use the information from the dataset you are already passing to your report structure. You are already putting the currency name where your header can find it by making it the page name.
=Globals!PageName
as the expression for your placeholder.

Related

SSRS number format expression showing unexpected results

I have a table that contains metric data for various business units in our organization. There is one column that contains the KPI measurments. I've created a report to display each business units KPI's. Some of the metrics need to be displayed as whole numbers, others need to be displayed as percentages.
I created an expression to handle the multiple formats. The problem I'm having is with the percentages. For example one of the numbers (which should be displayed as 93.74%) appears as 939474%. If I remove the expression and set the format to percentage using the text box properties, the number displays as 93.74%.
Here is the expression I'm using:
= IIF(Fields!KPI_desc.Value like "*Rate",
Format(Fields!Value.Value,"0.00%"),"0")
Any suggestions would be appreciated.
Thank you
I guess you put this into the Format Expression so that it will return the result like integer. Actually you just need to put this expression into textbox directly.
= IIF(Fields!KPI_desc.Value like "*Rate", FormatPercent(Fields!Value.Value,2),"0")

SSRS - Changing tab name when exporting to excel

I have tabbed my report in SSRS 2012 by having my page breaks based upon grouping classname and it works great. How do I change the tab names when exporting to Excel? I tried having an expression for page name =Fields!classname.Value. In doing so, it makes all 4 of my tabs equal the first page break of Sales Division.
My tabs are based upon the grouping of classname, which in returns gives me the 4 tabs: Sales Division, VRS, ClearCaptions, and IP-relay.
You need to set the PageName of the Tablix Member (group), NOT the PageName of the Tablix itselfs.
If you got the right object, if will say "Tablix Member" (Tablix-Element in German) in the title box of the properties grid. If it's the wrong object, it will say only "table/tablix" (without member).
Also, be advised to set the sort order of the group expression, so the tabs are alphabetically sorted.
If you get the tablix instead of the tablix member, it will put the same tab name in every tab, followed by a (tabNum). That is exactly your current problem.
This solution was not working for me.
I had to add group break page.
https://www.mssqltips.com/sqlservertip/3527/export-sql-server-reporting-services-report-data-into-multiple-excel-worksheets/

Use multiple ReportItems in one expression in RDLC Report

I want to display page wise sum of 2 columns in footer.for that I am using following expression in footer
=Sum(ReportItems!col1.Value) + Sum(ReportItems!col2.Value)
but it gives following error
"The Value expression for the textrun refers to more than one report item. An expression in a page header or footer can refer to only one report item."
anybody knows how can I solve this issue and display page wise sum in footer ?
Thanks
Here is simple workaround for your problem:
Add single textbox to the body of the report and name it i.e. "SUM"
Add your expression to this textbox =ReportItems!col1.Value + ReportItems!col2.Value
For this textbox set visibility as hidden
In the footer refer to this hidden textbox using =ReportItems!SUM.Value
I usually use Custom code-feature of report for these operations. Just open Report Properties and choose Code-view. Just then write basic VB get/set-methods to save and sum values.
Referring to methods in TextBox expression goes just like this: =Code.[YourMethodNameHere].
For example, saving value:
=Code.SaveMyValue(Fields!MyVal.Value)
and getting value:
=Code.GetMyValue()

SSRS: Snapshot runtime?

I have a SSRS report which is the snapshot or another report. It runs every day # 6 am. I want to add a header at the top of the report(snapshot), which indicates when the snapshot was taken so that the user knows when the snapshot was taken.
Does anyone know how can i do that?
if I truly understand your question :
you can add date or time of report processing by adding a textbox on header and write this expression as its value :
=TimeOfDay()
or
=Now()
Ususally you would use Globals!ExecutionTime to display this, but from my research, headers and footers are calculated when the report is rendered. A work around for this is to place the textbox (make it hidden) with Globals!ExecutionTime in it on the report body and then place another textbox in the header or footer which references that textbox like this: ReportItems!ReportBodyTextBoxName.Value.
Answer found on the following site:
http://www.manning-sandbox.com/message.jspa?messageID=52186
The best way for me was to add an extra column to my dataset. e.g.:
SELECT COL1
,COL2
,...
,COLn
,SYSDATE AS EXEC_DAT
FROM ...
You can then use First(Fields!EXEC_DAT.Value, "DATASET_NAME") if the expression is in the header.
PS: SYSDATE works for Oracle, you'll have to determine the correct function for your RDBMS

Reporting Services - Group Name in Page Header

I have a report with one group (Office Name) which page breaks between each group - so the data for only one Office can appear on a given page. How do I get that Office Name to appear in the page header?
I tried creating a hidden textbox in the details section of the report which has the Office Name value and then referencing that in the Page Header, but I get the last Office Name value on page 1 and then it is blank on every other page.
Today, at last I found another way to do this.
On the group that you specified the page break, in the properties window, expand the Group section.
See Pagination in Reporting Services (Report Builder and SSRS)
You can set the BreakLocation property in the Tablix Properties,
Rectangle Properties, or Group Properties dialog boxes, but you must
set the Disabled, ResetPageNumber, and PageName properties in the
Report Builder Properties pane.
You should see a PageName field. This field can be set to that of one of the field data values from the dataset used by the tablix.
Once you have set the PageName field, you can add a textbox to the Page Header/Footer and set the expression to use the PageName field. Built-in Globals and Users References (Report Builder and SSRS)
=Globals!PageName
This should then change on each group change, and be visible on each page.
I have realy struggled finding a good solution for this, so if I need to clear up the answer, please feel free to suggest this.
I got it to work and I'll post the answer in case someone else runs across this issue.
For some reason referencing the text box did not work, but when I put a hidden column in the table with the same value, I could then reference that in the Page Header.
I am actually doing this in the footer and it worked! Thanks! Just wanted to add if you have multiple values you are trying to display in the header or footer, you can string them together with a delimiter in the pagename expression like
=Fields!FIELD1.Value + "|" + Fields!FIELD2.Value + "|" + Fields!FIELD3.Value + "|" + Fields!FIELD4.Value
Then you can create new fields (one for each value) and parse out each field like
=(Split(Globals!PageName, "|")).GetValue(0)
=(Split(Globals!PageName, "|")).GetValue(1)
=(Split(Globals!PageName, "|")).GetValue(2)
=(Split(Globals!PageName, "|")).GetValue(3)