我刚刚进入SSRS并遇到了查找函数的问题,我无法看到问题。
我有一个带有查找函数的表达式,它应该从另一个数据集返回一个值,但它返回#Error
我想列出一个人拥有的所有抵押贷款,并在另一张表中返回抵押类型的描述字符串。
所以,我的按揭表看起来像这样:
我的查找表如下所示:
我想将Mortgages.MortgageType加入TypeIndex.ID并返回TypeIndex.Description
我认为以下应该做的事情:
=Lookup(Fields!MortgageType.Value,Fields!ID.Value,Fields!Description.Value, "TypeIndex")
我检查过并检查过但似乎无法解决问题?
答案 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的不同“描述”值。
如果您仍然面临一些问题,请告诉我。