分配 NO DATA 而不是在 s-s-rs 2008 中显示空白单元格 - 基于行可见性表达式

Posted

技术标签:

【中文标题】分配 NO DATA 而不是在 s-s-rs 2008 中显示空白单元格 - 基于行可见性表达式【英文标题】:Assigning NO DATA instead showing blank cells in s-s-rs 2008 - based on row visibility expression 【发布时间】:2016-04-11 12:06:14 【问题描述】:

我在 s-s-rS 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 属性并将“无数据”分配给 NoRowsMessage 属性。这不适用于这种情况,我无法弄清楚如何计算矩阵中显示的行号。任何帮助将不胜感激。

【问题讨论】:

能否请您在 s-s-rS 报告中分享矩阵的 XML 定义及其属性? 我认为我的矩阵及其属性的 XML 定义与我的问题无关,这个问题很普遍。你为什么不自己创建一个矩阵并测试这种情况 您为什么不分享您的代码,以便我们可以复制您当前的报告并尝试更快地为您提供答案和解决方案?创建通用报告仅表明它在我的情况下有效。 【参考方案1】:

您可以通过在 tablix 的末尾和行组之外添加一行来做到这一点。

创建行后,在行的第一个单元格中输入No Data

选择No Data 行并转到Row Visibility 属性并设置此表达式:

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

当所有行的等级为 95 或更低时,将显示无数据行,但将隐藏数据行。

更新根据 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)

当至少一行的 Grade > 95 时,它会返回这个。

当没有等级大于 95 的行时。

如果这有帮助,请告诉我。

【讨论】:

您好,感谢您的回复。我通知矩阵中也有一个 groupby 表达式,并且成绩是通过 SUM(grade) 计算的。这就是为什么我相信你的建议没有奏效。我编辑了我的问题,我可以请你在你有空的时候再检查一下吗? @ErayBalkanli,您也是按名称分组还是 ID 和名称是唯一值?。 我也是按名称分组的。 一个ID有不同的名字吗? ID = 1,Name = NameA,45 年级。ID=1,Name=NameB,60 年级。这是你的情况吗? ID = 1,姓名 = A,等级 45。ID=1,姓名=A,等级 60。ID = 2,姓名 = B,等级 22。ID=2,姓名=B,等级57. 等等 Id 和 Name 总是相同的。

以上是关于分配 NO DATA 而不是在 s-s-rs 2008 中显示空白单元格 - 基于行可见性表达式的主要内容,如果未能解决你的问题,请参考以下文章

将 self 分配给 UITextFieldDelegate 在 iOS 8 中而不是在 iOS 7 中工作

分配orignal Image而不是在字符串中使用UIImage

将 s-s-rS 报告迁移到 AZURE VM,而不迁移本地 SQL 数据库。可能吗?

背景图像未与 s-s-rS 中的气泡图对齐

如何修改 s-s-rS 矩阵报表以显示总计的平均值?

Mysqldump导出额外的记录而不是在其他条件下