2014-01-22 109 views
1

我有一個多值參數,我在IIF條件如何檢查IDEX的價值爲空或不是 現在,我使用這個表達式檢查索引值

IIF(IsNothing(參數!FR.Value(0)),」」,‘測試’)

我的參數是隱藏的,有些事情它有4個值或一段時間小於4

當我檢查值的索引3值(3),並且該索引中沒有值。我顯示錯誤。我如何檢查參數的索引值。

+0

我想這也可能是一些使用的: http://stackoverflow.com/questions/21237135/display-the-non-selected-parameter-in-ssrs/21240183#21240183 – user3056839

回答

2

第一個問題是索引3處沒有對象,而不是對象的值是Nothing,因此嘗試訪問不存在的對象的Value屬性時會出現錯誤。

第二個問題是IIF是一個函數而不是語言結構,所以所有參數都在函數被調用之前被評估,而不管布爾條件的值如何。我看不到一種嘗試訪問Value(3)屬性的方法,但不存在IIF函數在您的臉上不存在時會炸燬。你可以嘗試一些令人費解這樣的:

=IIF(Parameters!FR.Count >= 4, Parameters!FR.Value(IIF(Parameters!FR.Count >= 4, 3, 0)), "") 

但那是仍然要炸燬在你的臉上的時候有根本沒有選擇的參數值。

這樣做是創建於其中傳遞出的多值參數,你想有一個自定義代碼函數和指數的最簡單和最安全的方式:

Function Get_FR_by_Index(ByVal parameter As Parameter, ByVal index As Integer) AS String 
    Dim Result As String 
    Result = "" 
    If parameter.IsMultiValue Then 
    If parameter.Count >= index+1 Then 
     Result = CStr(parameter.Value(index)) 
    End If 
    End If 

    Return Result 
End Function 

然後使用此功能來訪問結果:

=Code.Get_FR_by_Index(Parameters!FR, 3) 

請記住,該指數是從零開始的,所以第一個Value是指數0

+0

嗨克里斯, 感謝您的回覆。我想問一下,我在ssrs報告中寫了這個函數。 –

+1

在Visual Studio中,使用「Report」菜單並選擇「Report Properties ...」。在該對話框中選擇「代碼」窗口並粘貼上面的代碼。您將能夠按照描述訪問表達式中的代碼。 –