Ssrs

我想根據欄位值從 SSRS 報告中排除行,如果由於過濾而沒有結果,則顯示一條消息

  • March 12, 2021

我有一個報告,我想根據欄位值排除大多數行。那部分並不難。我過濾掉的值是“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這裡找到關於函式的文件。

引用自:https://dba.stackexchange.com/questions/286702