2008-10-01 25 views
1

我有一些公式在我的報告,並以記名錶決防止被零我在表達領域這樣做:!的ReportViewer被零除

= IIF(場F1.Value <> 0,場F2!價值/領域!F1.Value,0)

這通常工作正常,但當F1和F2都爲零時,我在報告中得到「#Error」,並且我得到這個警告:「The Value expression for the文本框'textbox196'包含一個錯誤:嘗試除以零。「

這是爲什麼?

回答

1

必須有比這更漂亮的方式,但這應該工作:

=IIF(Fields!F1.Value <> 0, Fields!F2.Value/
    IIF(Fields!F1.Value <> 0, Fields!F1.Value, 42), 0) 
3

IIF()僅僅是一個函數,像任何功能所有參數進行評估之前的函數被調用,包括Fields!F2.Value/Fields!F1.Value。換句話說,儘管有Fields!F1.Value <> 0條件,它將嘗試除以零。

+0

啊,是的,當然,開始記住VB .. 但是,什麼樣的解決方案退出到這個問題? 據我所知,我無法輸入VBA片段作爲表達式,還是我錯了? – neslekkiM 2008-10-01 17:42:13

+0

我不確定:VB9(.Net 3.5)支持一個新的If()_operator_,它像一個基於C的三元運算符(?)一樣工作。 VB8(.Net2.0)支持內聯If/Else結構。但我不認爲可以使用ReportViewer。 – 2008-10-01 18:25:13

+0

我可能是錯的,但我不認爲這解釋了問題。當只有F1 == 0時,neslekkiM的工作正常,但當兩個*都是0時不正確?再加上Joel,你的分區表達與neslekkiM寫的不一致 - 他的F1是除數,而不是F2。 – cori 2008-10-02 12:47:32

0

但是,您可以使用

if Fields!F1.Value <> 0 
then 
Fields!F2.Value/Fields!F1.Value 
else 0 

這應該工作,因爲它不評估,然後子句如果「if」部分爲假。