SSRS hide #Error displayed in cell

痞子三分冷 提交于 2019-12-18 04:34:09

问题


I am doing computations on that data that will result in #Error at times. The underlying cause is a divide by zero. I could jump through the necessary work arounds to avoid the divide by zero, but it might be simplier to mask the #Error text and show a blank cell. Is it possible to hide the #Error and just display nothing?

Edit

The expression for the text might display #Error is something along these lines:

Fields!Field1.Value / Fields!ValueThatMightBeZero.Value

I could work around this with some ugly checking, but it might be easier to just catch the #Error. (A straight iif check around the express doesn't work because SSRS evaluates both the true and false clauses first; if it gets a divide by zero on either clause, it will return #Error, even if that clause wouldn't have been used).


回答1:


There is an IsError function, but it won't reduce the code you need to handle this. If you don't like the usual iif work arounds, then I think you need to use your own embedded code in the report. In that code you can have a try catch handler. Create a function that you can call with =Code.MyDivider(Fields!Field1.Value , Fields!ValueThatMightBeZero.Value)

Public Function MyDivider(top As Double, bottom As Double) As Double
    If top = 0 Then Return 0
    If bottom = 0 Then Return 0
    Return top / bottom
End Function



回答2:


Change the font to be the color of the background if Fields!Value_Denominator.Value=0 and you won't see the error message.




回答3:


It is ugly but here is a way I've found to make it work in the expression and without the custom function.

You have to check in the denominator too and substitute a non-zero divisor there so that divide by 0 never happens (even though we'd like the first half of the IIF to short circuit it and not get there at all): I use 1.
Of course this will then give an incorrect value but then I keep the outer IIF to show whatever I want when the denominator is 0 (I show 0 in my example).

=IIF(Fields!Value_Denominator.Value=0, 0, Fields!Value_Numerator.Value/IIF(Fields!Value_Denominator.Value=0,1,Fields!Value_Denominator.Value))



回答4:


Add a small value to the second expression -

Fields!Field1.Value / (Fields!ValueThatMightBeZero.Value+.00001)

That'll return 0.




回答5:


This is a good solution. However I think it's possible even to improve it. Instead of putting the conditional formatting to "White", I suggest to put the conditional Hidden expression to True instead. In this case, when exported to excel, the cell will contain nothing, unlike the case of changing the font forecolor. Under Visibility --> Hidden =Iif(Fields!denominator.Value=0,True,False)




回答6:


Use TRY & CATCH in a SSRS Custom Code

Public Function My_Function(ByVal My_Divisor As int) As int  
  Dim My_Result as integer
  TRY
My_Result = 100/My_Divisor
  CATCH
 My_Result = -1
  END TRY
  Return My_Result
End Function 



回答7:


You can use IsNumeric to check each expression and display a 0 or better yet do not display anything as 0 might have some meaning.

IsNumeric - Returns a Boolean value indicating whether an expression can be evaluated as a number.

For example:

=Iif(IsNumeric(Fields!YourValue.Value), Fields!YourValue.Value, Nothing)

or

=Iif(IsNumeric(Fields!YourValue.Value), Fields!YourValue.Value, 0)



回答8:


Use the NULLIF function:

DECLARE @a int
DECLARE @b int

SET @a = 1
SET @b = 0

SELECT @a/@b --this returns an error

SELECT @a/NULLIF(@b,0) -- this returns NULL



回答9:


Another alternative to the suggestions so far is to add the part of the formula that could create the error.

Example: a/b, if b = 0, then the equation gives an error.

{=IIF(b=0, TRUE, FALSE)}




回答10:


This may not work in all cases, but for me it did the trick.

I added another column that referenced the textbox with the error (ReportItems!XYZ.Value), SSRS shows #Error as blank using this type of reference. I then hid the column that contained the actual formula, and voila, solved. Albeit in the hackiest way possible.



来源:https://stackoverflow.com/questions/9144312/ssrs-hide-error-displayed-in-cell

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!