【问题标题】:How to substitute NULL parameter for subreport?如何用 NULL 参数替换子报表?
【发布时间】:2014-05-13 13:31:15
【问题描述】:

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

在没有记录的情况下如何成功避免此错误?

【问题讨论】:

    标签: reporting-services parameters


    【解决方案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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 2019-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多