簡體   English   中英

基於行可見性表達式,在ssrs 2008中分配NO DATA而不顯示空白單元格

[英]Assigning NO DATA instead showing blank cells in ssrs 2008 - based on row visibility expression

我在SSRS 2008中遇到問題,如下所述:

我有一個連接到查詢的矩陣,可以說Select * from Table 它正在返回,可以說有50行數據。 在我的矩陣中,只有一行。 可以說:

id   name    grade
[id] [name]  sum[grade]

矩陣在行組中按“ id”和“ name”分組。 該行有一個行可見性表達式,例如=IIF(sum(Fields!grade.Value)>95,false,true) 假定在這種情況下,該表未顯示任何數據,則所有返回的50行數據的總分低於95。 因此,我在屏幕上只能看到沒有任何信息的列,例如:

id name grade

我要寫的是“無數據”,例如:

id name grade
No Data

通常,當查詢沒有返回數據時,我可以通過Tablix屬性並將NoData指定給NoRowsMessage屬性來實現。 這不適用於這種情況,並且我無法弄清楚如何計算矩陣中顯示的行數。 任何幫助,將不勝感激。

您可以通過添加一行,將Tablix的末尾添加到“行組”之外來執行此操作。

在此處輸入圖片說明

創建該行后,在該行的第一個單元格中鍵入No Data

在此處輸入圖片說明

選擇“ No Data行,然后轉到“ Row Visibility屬性並設置以下表達式:

=IIF(
Sum(IIF(Fields!Grade.Value>95,1,0))>0,True,False
)

當所有行的等級均為95或更低時,將顯示“無數據”行,但數據行將被隱藏。

在此處輸入圖片說明 在此處輸入圖片說明

UPDATE根據OP的反饋進行更新。 成績欄是一個求和表達式。

在這種情況下,使用LookupSet函數通過ID獲取成績很有用。 它們將以數組數據類型返回,因此我們需要自定義代碼來匯總ID等級。

轉到Report菜單/ Report Properties... ,選擇“ Code選項卡並粘貼以下代碼。

Dim HiddenFlag as Integer = 0
Function CalculateHiddenFlag(ByVal items As Object()) As Integer
   If items Is Nothing Then
      Return HiddenFlag
   End If
   Dim sumItems As Decimal = New Decimal()
   sumItems = 0
   For Each item As Object In items
      sumItems += Convert.ToDecimal(item)
   Next
   If (sumItems > 95 and HiddenFlag=0) Then
      HiddenFlag = 1
   End If
   Return 0
End Function

Function GetHiddenFlag() As Integer
   Return HiddenFlag
End Function

現在修改[Sum(Grade)]單元格表達式,並使用此表達式:

=Sum(Fields!Grade.Value)+
Code.CalculateHiddenFlag(
LookupSet(Fields!ID.Value,Fields!ID.Value,Fields!Grade.Value,"DataSet15"))

用您的實際名稱替換DataSetName

您的矩陣應如下所示:

在此處輸入圖片說明

對於“ No Data行可見性屬性,使用以下表達式:

=IIF(Code.GetHiddenFlag()=1,True,False)

當至少一行的成績> 95時,它將返回此值。

在此處輸入圖片說明

而當沒有行的成績大於95時。

在此處輸入圖片說明

讓我知道是否有幫助。

暫無
暫無

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

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