2011-06-07 73 views
3

我有兩個小數字段,利潤和收入。它們顯示在一個tablix控件中,每個都有自己的列。在第三欄中,我想按收入劃分利潤。當其中任何一個字段爲零時的結果是#error,我猜這是由於除以零。我想出了下面的表達式來解決這個問題:RDLC表達式導致#error

=iif(Cint(Fields!revenue.Value) = 0 orelse cint(Fields!profit.Value) = 0 ,"",FormatPercent(Fields!profit.Value/Fields!revenue.Value,2)) 

這表達仍然導致#ERROR。我做了一些測試,並拿出了表達的錯誤部分。表達是這樣的:

=iif(Cint(Fields!revenue.Value) = 0 orelse cint(Fields!profit.Value) = 0 ,"No","Divide") 

如果運行的表情,原來的斑點有#ERROR,現在顯示「無」。這告訴我表達式正如我所期望的那樣工作,但爲什麼當我在假條件中添加除法時拋出#error。它不應該達到表達的那部分。任何幫助表示讚賞。我也嘗試了一個switch語句,但結果是一樣的。它隨時在表達式中劃分了#error。

回答

10

非常相似: Reporting Services expression gives error in some circumstances

IIF評估所有參數。如果任何參數產生一個錯誤,那麼整個函數將會拋出一個錯誤,而不管應該返回哪三個參數。

試試這個代碼:

=iif(Cint(Fields!revenue.Value) = 0,"",FormatPercent(Fields!profit.Value/iif(Cint(Fields!revenue.Value) = 0, Fields!revenue.Value, 1),2)) 

該代碼有不斷從以往除以零任何參數第二IIF。 (我編輯的代碼,直接進入瀏覽器:它可能需要一些小改動另外,你真的應該使用細胞或佔位性爲百分比,而不是你的表達格式。)

+0

謝謝你。我不知道它評估表達的兩面。 – HunterX3 2011-06-07 16:13:07

+0

哇,我正要把我的頭髮拉出這個相同的場景。謝謝(你的)信息! WOW !! – robertmiles3 2011-11-17 14:21:15

+0

如果M $能夠解決這個問題,那將會很好,所以我們不會花費太多時間來開發我們的頭腦,試圖爲此尋找解決方法。荒謬!!! – cChacon 2016-07-21 19:20:03

1

當心,

這似乎就像您不能在報表iif表達式中使用不支持的數據類型一樣。

這裏是我有什麼:

=IIf(Fields!MyNotSoComplexObject.Value is nothing, "No object", Fields!MyOtherField.Value) 

當「MyNotSoComplexObject」爲空一切工作,當它的東西被分配,我有#ERROR。

我通過試圖直接在報告中顯示「MyNotSoComplexObject」發現了這一點。

我的工作就是在我的數據集中添加一個bool值,以驗證「MyNotSoComplexObject」是否有值。