2012-09-12 33 views
0

我嘗試在我的報告來評估一個字段,但它失敗每次:如何停止評估,如果第一condion已經通過

= IIf(Fields!lectcrs_hrs.IsMissing, 
     Round(Fields!lectcrs_fee.Value * "1.00", 2), 
     Round(Fields!lectcrs_fee.Value * Fields!lectcrs_hrs.Value, 2)) 

Fields!lectcrs_hrs.IsMissing = true我場的情況下是空的,我發現第二個案例Round(Fields!lectcrs_fee.Value * Fields!lectcrs_hrs.Value, 2)包含缺失字段Fields!lectcrs_hrs的原因,爲什麼它檢查第二個案例是否通過了第一個案例!

如何解決這個問題?

回答

3

您正在查找的行爲稱爲「短路」,不幸的是,Visual Basic中的IIf函數不提供這種功能。原因在於IIf()是三元組函數,因此,傳遞給它的所有參數在之前評估爲,函數調用發生。另一方面,三元運算符運算符(如果()在VB 9+中)支持條件評估。但是,我不相信If()運算符可以用作SSRS中表達式的一部分。

鑑於您試圖在運行時使用可能存在或不存在的字段,我建議您在報告中創建自定義函數以處理正確的檢查和返回值。作爲參考,請看this blog post,它涵蓋了相同的情況。

相關問題