首页 > 解决方案 > 如何在 SSRS 中添加基于搜索的多值参数?

问题描述

我有一个 SSRS 报告,它在一个多值参数的过滤器(参数不是 SSRS 过滤器)中有 1 万条记录。因此,在参数的下拉列表中定位值要困难得多。我需要在报告中添加一个基于搜索的多值参数以简化过滤。请指导我这样做或给我发任何其他可能的建议。

谢谢

标签: reporting-services

解决方案


您可以使用两个参数来执行此操作。

假设您有一个很大的客户名称列表。

在您的第一个参数(我们称之为 is cSearch)中,这只是一个纯文本参数而不是多值。

在您的第二个参数中,使用类似的数据集查询

SELECT CustomerID, CustomerName 
    FROM myCustomers
    WHERE CustomerName LIKE '%' + @cSearch + '%'

填写第一个参数后,当您单击第二个参数时,它将仅填充匹配值。


编辑更详细的解释


为了扩展这一点,我整理了一份非常快速的报告来说明我的意思。如果这不是您想要的,那么请编辑您的问题,添加尽可能多的细节、设计的屏幕截图、您希望看到的模型、参数状态的所有排列等。

我为此使用了 Adventure Work LT 示例数据,以防您想遵循它。

创建新报告

创建一个新数据集(如果需要,作为数据源)

将数据集的查询设置为

  SELECT  CustomerID, CompanyName 
FROM [AdventureWorksLT2019].[SalesLT].[Customer] 
WHERE CompanyName LIKE '%' + @cSearch + '%'
ORDER by CompanyName

添加数据集时,将生成一个名为 的新报表参数cSearch

转到此参数的属性并执行以下操作

Allow blank value ("")on 设置为表达式的默认值=""

这将在报表首次运行时将参数设置为空字符串。

接下来,添加另一个名为“pCustomers”的参数

将此设置为“允许多个值”

将可用值设置为您的数据集,选择CustomerID作为值字段,选择公司名称作为标签字段。

接下来将默认值设置为相同的数据集,并再次选择 CustomerID 作为值字段。

现在,当您第一次运行报告时,该cSearch参数为空,因此所有公司名称都列在您的第二个参数中。

在此处输入图像描述

如果我们在搜索参数中输入“world”并按下回车,第二个参数值就会更新......

在此处输入图像描述


推荐阅读