【发布时间】:2015-02-23 15:07:49
【问题描述】:
我有一个 SSRS tablix,它从类似于以下的几个数据集中提取数据(已更改以避免解释确切的上下文):
有一个员工数据集,其中包含员工 ID、经理的员工 ID 以及他们已完成的任务数,例如
经理员工任务
数据003 数据001 118
数据003 数据002 42
数据003 数据003 94
数据003 数据004 118
来自另一个数据库的数据集提供了针对每位员工的投诉数量以及支持的数量。
tablix 链接到提供员工编号、姓名、任务总和的员工表,然后进行查找以找到投诉、支持投诉并计算导致投诉或支持投诉的任务百分比。
例如
=lookup(Fields!EMPLOYEE_CODE.Value,Fields!EMPLOYEE_CODE.Value,Fields!Number_of_Complaints.Value,"ComplaintsPerEmployee")
然后将其分组到管理器字段中。
个别员工的数字还可以,当我尝试对查找的数字求和时,问题就出现了。刚开始的时候希望能做的就是这样的表情
=sum(multilookup(
Fields!EMPLOYEE_CODE.Value,
Fields!EMPLOYEE_CODE.Value,
Fields!Number_of_Complaints.Value,
"ComplaintsPerEmployee"))
在为每个经理提供总计的 tablix 行中。但是,这会产生错误。当我尝试时:
=join(Fields!EMPLOYEE_CODE.Value,",")
我得到一个错误。所以我很困惑 - 为什么这没有给我传递给加入或多重查找的员工代码数组,就像我可以做 Sum(TASKS) 来总结每个经理下的员工的任务一样。
由于它们位于不同的数据库中,因此我无法轻松地在源中连接 SQL 中的表,而且我真的不想复制其他数据库中的任何数据。我知道问题不在于 sum,因为上面给出的连接不起作用,我已经尝试使用以下自定义代码代替 sum:
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、表达式等内容,但我似乎被我已经知道或不相关的东西淹没了 - 谁能指出我正确的方向?
【问题讨论】:
标签: vb.net oracle reporting-services ssrs-2008