簡體   English   中英

SSRS表達多個條件

[英]SSRS expression multiple conditions

我正在嘗試在tablix上構建SSRS表達式。 它使用兩個參數:以{A,B,C,D}為乘積的產品和Qtr為1,2,3,4季度和數量為1000,2000,3000,4000,5000,6000,7000的產品。 我試圖通過說如果Product是A且qtr是4,則Amt是2000,如果不是Amt是3000,則向Product A添加額外條件。以下表達式在tablix中給我#Error。 我不知道怎么了

=iif(Parameters!Product.count=2,1000,iif(Parameters!Product.Value(0)="A" AND Parameters!Qtr.Value(0)=4,2000,iif(Parameters!Product.Value(0)="A",3000,iif(Parameters!Product.Value(0)="B",4000,iif(Parameters!Product.Value(0)="C",5000,iif(Parameters!Product.Value(0)="D",6000,7000)))))) 

這可能不是最優雅的解決方案,但在我的測試案例中有效。 我不確定為什么,但是對Parameters!Product.Value(0)的引用導致了此問題。 這對我來說沒有意義,因為根據您的表達式檢查count = 2,它必須是一個多值參數,這意味着它不能為null,因此始終會有Value(0)。 您可以將=Parameters!Product.Value(0)本身放在文本框中,但將其放在條件中顯然會引起問題。

首先,Switch比嵌套的IIf更適合此任務,因此我改用了它。 這與錯誤沒有任何關系,但是它更具可讀性和易於理解。

為了解決在條件中引用Parameters!Product.Value(0)的問題,我創建了一個用逗號分隔的參數值字符串,然后使用Left(Join(Parameters!Product.Value, ","), 1) 如果Product的實際值是可變數量的字符,則需要修改該值以在第一個逗號之前解析該值,但是由於您的值是A,B,C和D,因此可以使用。 因此完整的表達式如下所示:

=switch(
    Parameters!Product.Count = 2, 1000,
    Left(Join(Parameters!Product.Value, ","), 1) = "A" and Parameters!Qtr.Value = 4, 2000,
    Left(Join(Parameters!Product.Value, ","), 1) = "A", 3000,
    Left(Join(Parameters!Product.Value, ","), 1) = "B", 4000,
    Left(Join(Parameters!Product.Value, ","), 1) = "C", 5000,
    Left(Join(Parameters!Product.Value, ","), 1) = "D", 6000,
    true, 7000
)

而不是使用IIF來實現,請嘗試使用switch語句。 從長遠來看,這使編碼變得簡單且易於管理

例如:= switch(Fields!filestatus.Value =“ P”,“ lightGreen”,isnothing(Fields!filestatus.Value),“ IndianRed”,true,“ No Color”)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM