在标头中使用报告参数

时间:2011-05-19 18:53:46

标签: vb.net reporting-services reportingservices-2005 reportparameter

我读过other posts建议在标题中显示动态数据时使用参数,因为它在pdf中正确呈现。我正在尝试实施该解决方案,但遇到了一个问题。它在为参数返回数据时有效,但如果未返回数据则会引发错误。这是我的设置:

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

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

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

如果未返回默认值的行,则会显示错误:

  

'[报告参数名称]'参数缺少值。

我是报道服务的新手,所以我可能会错过一些大概念。对我来说,没有返回的数据符合允许空值条件。

1 个答案:

答案 0 :(得分: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)

(我不是在系统前测试这个,但你应该明白这个想法)

相关问题