我想根據欄位值從 SSRS 報告中排除行,如果由於過濾而沒有結果,則顯示一條消息
我有一個報告,我想根據欄位值排除大多數行。那部分並不難。我過濾掉的值是“OK”。所以最後報告只顯示包含警告的行。通常只有 50-60 行中的一到兩行。
我一直在使用表達式:
=IIF(Fields!ALERT_VALUE.Value = "OK", True, False) for the row.
現在我們進入棘手的部分。如果沒有警告,那麼我只會得到一個空報告。我想要做的是顯示一條消息,表明沒有警告。
因此,我創建了一個新行並在第一列中設置了這個表達式:
=IIF(Count(Fields!ALERT_VALUE.Value,"DataSet1")=0,"No Commitment Warnings", nothing)
並將可見性設置為:
=IIF(Count(Fields!ALERT_VALUE.Value,"DataSet1")=0,False,True)
但我什麼也得不到。
我想我在某處讀到我只是隱藏行而不是從報告中刪除它們,所以我猜我的消息行仍然看到隱藏的行,這就是它不起作用的原因。
但我發誓我今天早上已經成功了,哈哈!
那麼,有沒有辦法得到我想要做的事情?隱藏所有無警告行,如果沒有警告行,顯示消息?
好的,所以看起來技巧是獲取 Status = “OK” 的行的行數,並將其與所有行的計數進行比較。如果它們相等,則沒有警告消息,我們會顯示消息行。
如果它們不相等,則會出現警告並且我們不會顯示消息行。
做這一切的訣竅是對狀態為 OK 的行求和,如下所示:
=iif(countrows()<>sum(iif(Fields!ALERT_VALUE.Value=”OK”,1,0)),true,false)
感謝我的朋友查爾斯為我指明了正確的方向。
我對您的邏輯有點困惑,因為
=IIF(Count(Fields!ALERT_VALUE.Value,"DataSet1")=0,False,True)
如果計數為 0,可見性表達式將隱藏該行,這與您試圖=IIF(Count(Fields!ALERT_VALUE.Value,"DataSet1")=0,"No Commitment Warnings", nothing)
根據您所說的內容實現的邏輯相反。如果是這樣,那麼您可能需要做的就是像這樣在可見性表達式中翻轉False
和左右。True``=IIF(Count(Fields!ALERT_VALUE.Value,"DataSet1")=0,True,False)
作為參考,SSRS 的函式是從VBA派生的,所以你可以在
IIF
這裡找到關於函式的文件。