2009-04-09 56 views
0

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

即我打开Report => Report Properties =>代码并插入我的自定义代码,但如何更改下面的代码以排除其他字段的数值为下面的情况?

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 
+0

尝试了下面的代码并运行报告,但这两种情况下的值都不受影响。任何想法为什么? – Fet 2009-04-09 09:50:32

回答

4

我假设你想从一个总和,其中一个小区的同一行字符串值包括“其他”排除数值,以及您所提供的功能是用作分组报告中的表格标准。道歉,如果这是不正确的。

如果不使用第二块逻辑,无论是函数还是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)) 

根据根据源数据的性质,还可以通过将计算列添加到报告的源查询中来实现此目的。

我赞成第二个或第三个选项 - 自定义代码似乎为此目的矫枉过正。

+0

你太棒了!感谢一百万埃德! – Fet 2009-04-09 08:05:11

相关问题