0

我正在使用 SSRS 2008 R2。我的 RDL 中有几个子报表,它们都只从这个父 RDL 中获取一个字段值作为输入。这一字段值称为“people_id”。但在某些情况下,父 RDL 返回了 0 条记录。发生这种情况时,我从父 RDL 运行此报告时收到以下错误:

An error occurred during local report processing.  Object reference not set to an instance of an object.

即使我尝试将子报表的参数值设置为两者:

people_id

=iif(isnothing(Fields!people_id.Value),"",Fields!people_id.Value)

没有记录时如何成功避免此错误?

4

2 回答 2

1

我想现在为时已晚,但以防万一帮助其他人。

在报表处理时,表达式中的某些值可能会计算为 null 或未定义。这可能会创建运行时错误,从而导致在文本框中显示 #Error 而不是评估的表达式。IIF 函数对这种行为特别敏感,因为与 If-Then-Else 语句不同,IIF 语句的每个部分都在传递给测试真假的例程之前进行评估(包括函数调用)。如果 Fields!Sales.Value 为 NOTHING,则语句 =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) 在呈现的报告中生成 #Error。

来自http://msdn.microsoft.com/en-us/library/ms157328.aspx

我遇到了类似的问题,最终编写了一个自定义函数。

于 2014-05-13T05:31:15.887 回答
0

代替 =iif(isnothing(Fields!people_id.Value),"",Fields!people_id.Value),你可以试试 =iif(isnothing(Fields!people_id.Value),NOTHING,Fields!people_id.Value) 吗?

于 2012-09-22T05:13:37.937 回答