【问题标题】:SSRS: How to filter query with custom functionSSRS:如何使用自定义函数过滤查询
【发布时间】:2026-01-22 23:25:01
【问题描述】:

使用 VS 2015 和 SSRS 版本 14.0.608.142

我的报告属性的代码部分中有一个类似于下面的函数,我正在尝试使用它来过滤掉我的数据集中的值,但它没有返回任何值或给出任何错误。函数内部的值会在运行时被另一个应用程序更改,所以现在它内部的值只是一个占位符。

Function FilterBy() As String
    FilterBy = "'REMIT'"
End Function

我将该函数用作参数中的默认值,并且该参数位于我的数据集的 where 子句中以过滤掉必要的值。

所以,里面的参数默认值:

=code.FilterBy

数据集查询:

SELECT Blah 
FROM dbo.Table 
WHERE ID = @parameter;

【问题讨论】:

    标签: function reporting-services expression ssrs-2012


    【解决方案1】:

    所以,我在您的函数中注意到您正在设置一个变量但没有返回它。如果您尝试在报表属性中设置变量,则无法修改它们。那些东西是静态的。但是,您可以在代码中声明一个变量并使用 set 和 get 来检索它们。

    dim FilterBy = "REMIT" Function getFilter() As String return FilterBy End Function Function setFilter(input as String) FilterBy = input End Function

    因此,您的参数默认值为: =Code.getFilter()

    另外请注意,我没有在 REMIT 中添加单引号。当您在查询中传递参数时,您不需要向其添加单引号,它将由 SSRS 添加。除非您的数据库中的值为“REMIT”,否则请务必继续。

    【讨论】: