繁体   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