Monday, February 14, 2011

The end of my SSRS "NaN" misery! Avoid SSRS "NaN"....

I always had problems with that annoying “NaN” in SSRS, I used to run around it using IIF or REPLACE and ROUND, but finally I decided not to give up and find a neater solution for that particular report. 
Reading more about the IIF function @ http://msdn.microsoft.com/en-us/library/27ydhh0d%28vs.71%29.aspx
At the remarks section, they say “The expressions in the argument list can include function calls. As part of preparing the argument list for the call to IIf, the Visual Basic compiler calls every function in every expression. This means that you cannot rely on a particular function not being called if the other argument is selected by Expression.”
Anyway to cut my story short, if you have a function like:
=IIF(Lookup(Fields!ADM_DR_ID.Value, Fields!ADM_DR_ID.Value, Fields!ID2010.Value, "LOS") = nothing, "0" , Lookup(Fields!ADM_DR_ID.Value, Fields!ADM_DR_ID.Value, Fields!ID2010.Value, "LOS"))
It’s not going to work.
The right way is to avoid dividing by zero!
=IIF(Fields!ID2010.Value = 0, "0" , Lookup(Fields!ADM_DR_ID.Value, Fields!ADM_DR_ID.Value, Fields!ID2010.Value, "LOS"))
Hope that helps someone!