SSRS查找函数返回#Error

时间:2015-03-22 11:31:47

标签: reporting-services

我刚刚进入SSRS并遇到了查找函数的问题,我无法看到问题。

我有一个带有查找函数的表达式,它应该从另一个数据集返回一个值,但它返回#Error

我想列出一个人拥有的所有抵押贷款,并在另一张表中返回抵押类型的描述字符串。

所以,我的按揭表看起来像这样:

enter image description here

我的查找表如下所示:

enter image description here

我想将Mortgages.MortgageType加入TypeIndex.ID并返回TypeIndex.Description

我认为以下应该做的事情:

=Lookup(Fields!MortgageType.Value,Fields!ID.Value,Fields!Description.Value, "TypeIndex")

我检查过并检查过但似乎无法解决问题?

1 个答案:

答案 0 :(得分:2)

在这种情况下,您的查找数据集可能会为“描述”字段返回多个值。如果TypeIndex数据集将为ID的“描述”返回多个值,那么它将引发错误。

要处理此问题,您可以在报告代码部分中使用一个函数,然后在表达式中使用该函数。功能如下所示。这已经过测试,您可能会稍微修改一下。

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

现在在表达式中,您可以像下面这样调用此函数。

=Code.MergeLookup(Lookup(Fields!MortgageType.Value,Fields!ID.Value,Fields!Description.Value, "TypeIndex"))

这个MergeLookup函数将返回一个字符串,其中包含逗号分隔,用于相同ID的不同“描述”值。

如果您仍然面临一些问题,请告诉我。