我有一些公式在我的報告,並以記名錶決防止被零我在表達領域這樣做:!的ReportViewer被零除
= IIF(場F1.Value <> 0,場F2!價值/領域!F1.Value,0)
這通常工作正常,但當F1和F2都爲零時,我在報告中得到「#Error」,並且我得到這個警告:「The Value expression for the文本框'textbox196'包含一個錯誤:嘗試除以零。「
這是爲什麼?
我有一些公式在我的報告,並以記名錶決防止被零我在表達領域這樣做:!的ReportViewer被零除
= IIF(場F1.Value <> 0,場F2!價值/領域!F1.Value,0)
這通常工作正常,但當F1和F2都爲零時,我在報告中得到「#Error」,並且我得到這個警告:「The Value expression for the文本框'textbox196'包含一個錯誤:嘗試除以零。「
這是爲什麼?
必須有比這更漂亮的方式,但這應該工作:
=IIF(Fields!F1.Value <> 0, Fields!F2.Value/
IIF(Fields!F1.Value <> 0, Fields!F1.Value, 42), 0)
IIF()僅僅是一個函數,像任何功能所有參數進行評估之前的函數被調用,包括Fields!F2.Value/Fields!F1.Value
。換句話說,儘管有Fields!F1.Value <> 0
條件,它將嘗試除以零。
但是,您可以使用
if Fields!F1.Value <> 0
then
Fields!F2.Value/Fields!F1.Value
else 0
這應該工作,因爲它不評估,然後子句如果「if」部分爲假。
啊,是的,當然,開始記住VB .. 但是,什麼樣的解決方案退出到這個問題? 據我所知,我無法輸入VBA片段作爲表達式,還是我錯了? – neslekkiM 2008-10-01 17:42:13
我不確定:VB9(.Net 3.5)支持一個新的If()_operator_,它像一個基於C的三元運算符(?)一樣工作。 VB8(.Net2.0)支持內聯If/Else結構。但我不認爲可以使用ReportViewer。 – 2008-10-01 18:25:13
我可能是錯的,但我不認爲這解釋了問題。當只有F1 == 0時,neslekkiM的工作正常,但當兩個*都是0時不正確?再加上Joel,你的分區表達與neslekkiM寫的不一致 - 他的F1是除數,而不是F2。 – cori 2008-10-02 12:47:32