2

我已经阅读了其他建议在标题中显示动态数据时使用参数的帖子,因为它在 pdf 中正确呈现。我正在尝试实施该解决方案,但遇到了问题。它在为参数返回数据时起作用,但如果没有返回数据,则会引发错误。这是我的设置:

  • 允许空值
  • 允许空白值
  • 可用值:来自查询
  • 默认值:来自查询

我的标题中的文本框具有以下值:

=IIf(IsNothing(Parameters![Report Parameter Name].Value), "", Parameters![Report Parameter Name].Value)

当没有为默认值返回一行时,它会显示错误:

“[报表参数名称]”参数缺少值。

我是报告服务的新手,所以我可能会遗漏一些大概念。对我来说,没有返回的数据符合允许空值标准。

4

1 回答 1

1

在 IsNothing 和类似除以零的情况下使用 IIF 的问题在于,它不是一种语言结构,它实际上是一个函数。因此,参数在调用函数之前被评估,这意味着您认为不应该评估的表达式实际上是在函数调用之前评估的。

我知道计算 IF 表达式的真假部分似乎很疯狂,但将其视为函数调用而不是语言功能。没有像语言中那样的路径短路,错误在于在调用函数之前计算所有参数。

您可以将其替换为自定义代码功能,以达到您所追求的效果。所以大致如下:

右键单击报告正文并选择属性。单击代码选项卡并输入以下代码:

Public Function GetParamVal(ByVal ParamVal) As String
    If IsNothing(ParamVal) Then
        Return ""
    Else 
        Return ParamVal
    End If
End Function

然后像这样在标题中调用它:

=Code.GetParamVal(Parameters!MyParam.Value)

(我不在系统前进行测试,但你应该明白)

于 2011-05-20T02:31:16.823 回答