Format time in SSRS - reporting-services

I have this code in SSRS Reporting:
=": " + First(Fields!MY_TIME.Value, "MYDATASET")
which prints the time in 02:31:15. But what I really want is to be able to change it to 12hour time style. E.g 2:31:15 PM.
Is there a way to do this?
I tried using =format(Fields!MY_TIME.Value, "h:mm:ss tt") but it kept complaining of the dataset.
Any help would be appreciated

Instead of formatting with an expression, you can directly change the format in the textbox Properties window. Select the textbox you want formatted, go to the Properties window (shortcut F4), and put in h:mm:ss tt in the Format box to get your desired 12 hr format.

Related

SSRS formatting and exporting to Excel

I need to display a value like 100.02 as 100.02 if it is 100.00 it should display as 100 so I use the expression
=Replace(Round(Fields!Test.Value,2),".00","")
This displays in the desired format but
when I export to Excel it gets converted to Text .
Any suggestions on rectifying this issue are greatly appreciated.
For the Text Box's FORMAT property, use an expression that determines whether the number is an integer or not and use an expression based on that to set the format of the cell.
=IIF(Fields!Test.Value = INT(Fields!Test.Value), "N0", "N2")
Remember to remove the Replace and Round.

How to remove trailing zeros using ssrs?

I have a column DECIMAL(18,4). when I insert data like 123.45 it becomes 123.4500
I want to show it in SSRS like 123.45.
How to remove those zeros in SSRS?
Depending on what exporting formats your need you can set the number formatting to 0.####;(0.####)
I know this is compatible with the SSRS viewer and exporting to PDF, but Excel would take 123.0000 and show it as 123. instead of just 123
I dont agree with the accepted answer, casting to a string is another workaround:
=Str(NumericValueWithVariableDecimalPlaces)
Unfortunately a consequence is no numeric formatting settings will apply and setting cell Alignments to right causes numbers to be misaligned.
You can change the data type returned to SSRS to a FLOAT. That should do it :-)
Open SSRS Query Designer and add:
SELECT CONVERT(DOUBLE PERCISION,FIELD) FROM TABLE SOURCE
OR add to your select result from your Store Procedure source
SELECT CONVERT(DOUBLE PERCISION,FIELD) FROM TABLE SOURCE
This will remove trailing zeros: CDbl(Fields!YOURFIELD.Value)
This can be done in the SQL which you can do by casting the value to DECIMAL(18,2)
ex:
CAST(FieldName as DECIMAL(18,2))
but if you really want to do it in SSRS. You can right click on the textbox that the field is displaying in and go to textbox properties. In the pop-up box choose 'Number' and set the Category to 'Number' and then decimal places to 2. This should correctly display the value.
You could also right click on the textbox and go to expression and say this in the expression popup box:
=FormatNumber(Fields!FieldName.Value,2)
I try and find solution:
I use Expression for value:
=IIf(IsNothing(Fields!FieldName.Value), "", IIf(IsNothing(Fields!FieldName.Value), "-", CInt(Fields!FieldName.Value * 10000) / 10000))

How to format time in SSRS?

I am new to SSRS reports
I have time intervals as (1230, 1300, 1330,1400,1430,1500,1530)
I wanted to display them as (12:30pm, 1:00pm, 1:30pm, 2:00pm, 2:30pm, 3:00pm, 3:30pm) respectively.
How to achieve this in SSRS??
Use something like the following.
Format(CDate(Fields!YourTimeString.Value),"hh:mm tt")
Where YourTimeString is the time string. tt will give you the am\pm.
You can also right click on the textbox with your data and go to 'Textbox Properties...', and under the 'Number' tab, you can choose the format you would like the data to be shown in.

Switch & IIF Conditional Formatting in SSRS 2008

I'm am having some trouble with conditional formatting in SSRS. I have tried Switch & IIF Statements (below). The report runs but is not returning colors as it I'm hoping it would. I'm trying to highlight dates which are <= today in red, and everything else will be black. Does it matter if this field is a date field? I've seeen other questions on here with the same issues but no resolutions. Was hoping today would be my lucky day to find an answer. Here is what I have tried and thank you in advance for any input.
=Switch( Fields!Decision_Must_Be_Made.Value <= today(), "Red",
Fields!Decision_Must_Be_Made.Value > today(), "Black")
=IIF( Fields!Decision_Must_Be_Made.Value <=today(), "Red", "Black")
Yes, it definitely matters if the field is a Date Time field. If it's a string, then you need to convert it to datetime first. How you do that will depend on the format of the string. But it will be much better if you can stick with a datetime field from the database. (I've seen where some will format a date to a string in the select of the sql query. Don't do that. Format as late as possible: in SSRS, at the text box level.)
If it is a dateTime, break up your formula to find out what's not working as expected and make it more visible, if only for debugging. Put this in the expression of a cell, for example:
=IIF( Fields!Decision_Must_Be_Made.Value <=today(), "Old", "New")
Edited to add information on where the color formula should be added:
Sounds like you don't have the IIF specifying the color in the right place. There are a few different places you could specify this: it needs to be in the properties of either the textbox or the placeholder. The value for these things should simply be your date field (=Fields.Decision_Must_Be_Made.Value) but the font color needs to be specified separately. One place to do this is in the Text Box Properties dialog. In the font pane, you need to specify the font color. The Fx symbol indicates that you can specify a formula. Click this button for a place to enter your '=iif...' formula.
Admittedly this does not answer your scenario but may help someone else. I had an issue where a stand-alone textbox using a scenario where I wanted to display an error message when there was either no record or duplicate records. My formula "=IIf(IsNothing(First(Fields!MyField.Value)) Or First(Fields!MyField.Value) <> Last(Fields!MyField.Value), "Red", "SomeOtherColorButNotBlack") which did not render the correct fore-color (came out "Black") however, doing a similar expression that equates to True or False on a Tablix or Matrix does work fine. Another one for MS to solve. I found my own workaround by setting the color to always be red and then the expression of the Text to be blank when no error.

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