[英]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.