ssrs decimal rounding - reporting-services

In the SSRS Reports
the output for round(417.504,2) is
giving 417.51
Is there any function or option to get the my desired Rounding value
I want it to be:
round(417.504,2)=417.50

It will be good approach to get the formatted data from the database and for that do the rounding on database as suggested by #BIDude
But if the database query is not under your control then you can use the following
= Math.Round(417.5042,2, MidpointRounding.AwayFromZero)

Related

How to stop rounding in ssrs report

I have an SSRS report that is rounding currency and I need the report to show the actual value. When I run the query in query designer all the values are shown correctly. If I output this to Excel and SUM the values I get the total I expect (e.g £56724.30)
When I run the report I get the value £56840.00 so it looks as if the data being used is getting rounded before output.
I have a Calculated field in the report called Total_Rent_Due_UC_Claims:
=iif(Fields!UC_Rent.Value = Fields!LastCharge.Value, Fields!UC_Rent.Value, 0) or
iif(Fields!UC_Rent_Date.Value = Fields!LastCharge.Value and
Fields!extra10a_d003.Value < Parameters!AsAtDate.Value, 0, Fields!UC_Rent_Date.Value)
I then use this to get a total:
=Sum(Fields!Total_Rent_Due_UC_Claims.Value)
I have formatted this field to currency to two decimal places.
Can someone assist with this so that the value in the report is the same as the expected value?
I don't think this difference can be attributed to rounding -- at least not any rounding I've ever seen before. That's a difference of £115.70. I think the calculated field isn't quite doing what you want it to and needs a little modification. I'm not exactly sure what it's doing right now, but basically both of those IIF statements will evaluate because OR doesn't really work the way you have it. I would try the following expression.
=IIF(Fields!UC_Rent.Value = Fields!LastCharge.Value,
Fields!UC_Rent.Value, IIF(Fields!UC_Rent_Date.Value = Fields!LastCharge.Value
AND Fields!extra10a_d003.Value < Parameters!AsAtDate.Value, 0, Fields!UC_Rent_Date.Value))
Of course, this could still be wrong as I can't tell if all of the fields are date datatypes or if there's some kind of mismatch going on here. Let me know if this doesn't work and I'll see if I can adjust it.

Format a column with percentage using VBA

I am exporting a report to Excel from Access through VBA. There is a column in the report that should be formatted as percentage and round. How can I format this?
Set the Format property of the textbox in the report to: Percent
You may have to divide the value by 100 first. If so, rename the textbox to anything else than the name of the field, and use this expression as ControlSource:
=[YourFieldName]/100
For a new formatted string value, use Format:
=Format([YourFieldName],"Percent")
You don't mention what kind of rounding you need, but functions for all general methods of rounding are listed here: Rounding values up, down, by 4/5, or to significant figures

MS Access and number of decimal places returned in calculations

This is not a formatting question.
I have recently found that doing a simple division in an MS Access (2010) query does not return the expected number of digits. Even the simplest:
(3.1 + 3.1)/2 = 3.1
But MS Access returns 3.09999990463257
Yes, I can round and/or format the result to show a specified number of decimal places. Also, in the example above, rounding would give me the true value of 3.1; however, my question is simply "why does MS Access do this?" rather than how to fix it.
Both
SELECT (3.1+3.1)/2 AS Result FROM tblFoo
in a query, and
Debug.Print (3.1 + 3.1)/2
in VBA return 3.1 for me.
Are you summing up values of data type Single? They have limited precision.

SSRS Expression with parameter in WHERE clause

In SSRS, I'm trying to calculate the average number of months a client used a program. The programID is the parameter for the whole report. I'm trying to achieve this (not written with real syntax):
=Avg(Fields!length_of_stay.Value, 0))/30.0 WHERE programid = #ProgramID
Using this question, I came up the the following code which is producing an incorrect answer. I tested in SSMS to get the actual values to compare to SSRS results.
=Avg(IIF(Fields!programid.Value = Parameters!ProgramID.Value, Fields!Length_of_Stay.Value, 0))/30.0
The "/30" is used since the value is in days and I need months. I think the issue is using the parameter value chosen; this is my first report trying to calculate expressions with parameters.
Avg returns the average of all non-null numeric values. 0 is not null so it gets included in the average, distorting your result for every row with a different PragramId. Try using Nothing instead:
=Avg(IIF(Fields!programid.Value = Parameters!ProgramID.Value, Fields!Length_of_Stay.Value, Nothing))/30.0

error converting nvarcher to numeric when using between in where statement in SSRS

i have a simple query which is:
In the Where statement i need to be able to say between two paramteres
OPI_LAL_LOTNOENT_00.REEL between
#from
and #To
if i choose to use the above in the where statement i get the error converting nvarcher to numeric.
If anyone knows of a better way to do this by all means tell me, or could you tell me how to convert the nvarcher to a number whilst still being able to use between
All i want to be able to do is allow the user to choose between 2 values which they would enter themselves when running a report, for example
from = 10
to = 100
this would only bring back results where OPI_LAL_LOTNOENT_00.REEL result is between and including 10 and 100
I would change the Data type for the Parameters from and To, from Text to Integer. Then the users will only be able to enter valid numbers.