如何根据另一个字段的值从分组总和中排除一个值?

时间:2009-04-09 06:59:31

标签: vb.net reporting-services reportingservices-2005

如何根据另一个字段的值从分组总和中排除一个值?

即我打开报告=>报告属性=>代码并插入我的自定义代码,但是如何更改以下代码以排除下列情况的另一个字段的数值?

Public Function ChangeWord(ByVal s As String) As String
   Dim strBuilder As New System.Text.StringBuilder(s)
   If s.Contains("Others") Then
      strBuilder.Replace("Others", "Other NOT INCL")
      Return strBuilder.ToString()
      Else : Return s
   End If
End Function

1 个答案:

答案 0 :(得分:4)

我假设你要从一个总和中排除一个数值,其中同一行上一个单元格的字符串值包含“Others”,并且你提供的函数被用作表的分组标准在报告中。如果这不正确,请道歉。

如果不使用第二个逻辑,无论是函数还是Iif条件,都不可能做到这一点。我目前没有可用的SSRS来测试这个,但是(假设你的值列是一个整数,代码看起来像这样:

Public Function ExcludeOthers(rowDesc As String, rowVal as integer)
    if ChangeWord(rowDesc) = "Other NOT INCL"
        Return 0
    else
        Return rowVal
    end if
End Function

然后,在您希望出现条件和的单元格中:

=Sum(ExcludeOthers(Fields!desc.Value,Fields!val.Value))

或者,您可以在没有函数的情况下通过在条件和出现的单元格中使用Iif来执行此操作:

=Sum(Iif(ChangeWord(Fields!desc.Value) = "Other NOT INCL",0,Fields!desc.Value))

根据源数据的性质,您还可以通过向报表的源查询添加计算列来执行此操作。

我赞成第二种或第三种选择 - 为此目的,自定义代码似乎有点过分。