如何将NULL参数替换为子报表?

时间:2012-09-19 22:35:57

标签: reporting-services parameters

我正在使用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.

即使我尝试将子报表的paremeter值设置为:

people_id

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

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

2 个答案:

答案 0 :(得分:1)

我想现在为时已晚,但是在帮助其他人的情况下。

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

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

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

答案 1 :(得分:0)

而不是= iif(isnothing(Fields!people_id.Value),“”,Fields!people_id.Value),你能尝试= iif(isnothing(Fields!people_id.Value),NOTHING,Fields!people_id.Value) ?