【问题标题】:How to exclude one value from a grouping sum, based on a value of another field?如何根据另一个字段的值从分组总和中排除一个值?
【发布时间】:2009-04-09 06:59:30
【问题描述】:

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

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

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

【问题讨论】:

  • 尝试了以下代码并且报告运行,但在这两种情况下,值都不会受到影响。任何想法为什么?

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


【解决方案1】:

我假设您想从总和中排除一个数值,其中同一行上的单元格的字符串值包括“其他”,并且您提供的函数用作表格的分组条件在报告中。如果这不正确,请致歉。

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

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))

根据源数据的性质,您还可以通过将计算列添加到报告的源查询中来做到这一点。

我倾向于第二个或第三个选项 - 为此目的,自定义代码似乎有点矫枉过正。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-13
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2017-11-30
    相关资源
    最近更新 更多