SSRS固定源表达式LOOKUP函数返回#Error问题求解
SSRS LOOKUP函数返回#Error的原因及解决方案
报错原因
- 数据类型不匹配:LOOKUP要求查找源值和目标匹配字段的数据类型完全一致,你给出的查找值是字符串类型的
"Score1",如果数据集中RowName字段的实际数据类型为非字符串(比如数值、字符集不兼容的字符串类型),会触发类型匹配错误。 - 返回值未做显式类型转换:LOOKUP函数默认返回
Object泛类型,SSRS渲染时如果无法自动完成类型到报表文本的转换,就会抛出#Error异常。 - 命名不匹配:SSRS对数据集名称、字段名称的拼写和大小写完全敏感,若你写的
ScoreQuotient数据集名、RowName/RowDecile字段名和实际数据集定义中的拼写、大小写不一致,也会触发报错。
修复方案
- 首先核对数据集名称、字段名称的拼写和大小写,确保和数据集定义完全一致。
- 对查找值、匹配字段、返回值都做显式类型转换,确保类型统一,修改后的表达式如下:
=CStr(LOOKUP(CStr("Score1"), CStr(Fields!RowName.Value), CStr(Fields!RowDecile.Value), "ScoreQuotient"))
- 如果调整后依然报错,可以先在绑定了
ScoreQuotient数据集的表格中直接输出=Fields!RowName.Value和=Fields!RowDecile.Value,确认字段本身可以正常读取,排除数据集查询错误的问题。
内容的提问来源于stack exchange,提问作者JackR
相关产品推荐
相关产品推荐

