![](/img/trans.png)
[英]Hiding table or assigning temp data based on visibility expression ssrs 2008
[英]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.