对于行组,SSRS Lookup()应针对不同的ID

时间:2016-03-15 14:17:05

标签: reporting-services ssrs-2008-r2

我的.RDL文件包含: - 1.Dataset1 - > Tablix 1(ID,名称) 2.Dataset2 - >表格2(ID,时间)

Tablix1是Id Grouped for Id列,我想显示Tablix1的Totals行。该总行将包含Sum(Time-> Tablix2)。我使用查找来做这件事。在这种情况下,对Tablix1中的每一行执行Lookup,而我的要求是Lookup只适用于Tablix1的不同ID

如何为Lookup提供唯一值?

1 个答案:

答案 0 :(得分:0)

我在使用自定义代码和LookupSet功能之前已经处理过这个问题。

我重新创建了你的场景并创建了两个类似于你在问题中描述的描述。

enter image description here

创建一个附加表来连接两个表并计算时间总和,如下所示:

enter image description here

在突出显示的单元格<<Expr>>中使用以下代码:

=Code.SumLookup(
LookupSet(Fields!ID.Value,Fields!ID.Value,Fields!Time.Value,"DataSetName")
)
  

DataSetName替换为您的数据集的实际名称(我想你   将其命名为DataSet2)

最后转到Report菜单/ Report Properties...并选择Code标签。在文本区域中输入以下代码:

Function SumLookup(ByVal items As Object()) As Decimal
    If items Is Nothing Then
        Return Nothing
    End If
    Dim suma As Decimal = New Decimal()
    Dim ct as Integer = New Integer()
    suma = 0
    ct = 0
    For Each item As Object In items
        suma += Convert.ToDecimal(item)
        ct += 1
    Next
    If (ct = 0) Then return 0 else return suma 
End Function

我将生成以下Tablix:

enter image description here

编辑:如果您需要时间总和。

在您需要的单元格中使用此表达式:

=Sum(Fields!Time.Value,"DataSet2")

如果有帮助,请告诉我。