SSRS 报表参数通配符搜索

这篇 SSRS 文章展示了如何创建报表参数并执行通配符搜索,以过滤表格数据,并附有示例。

右键单击 Datasets 文件夹以创建新的 DataSet。在 SSMS 中编写以下代码,将显示我们在此报表参数通配符示例中使用的数据集。

我们用于此 SSRS 示例的 SQL 查询是

SELECT Cat.[EnglishProductCategoryName] AS Category, 
SubCat.[EnglishProductSubcategoryName] AS SubCategory,
Prod.EnglishProductName AS ProductName, Prod.Color,
SUM(Fact.OrderQuantity) AS Orders, SUM(Fact.TotalProductCost) AS ProductCost,
SUM(Fact.SalesAmount) AS Sales, SUM(Fact.TaxAmt) AS Tax
FROM FactInternetSales AS Fact
INNER JOIN DimProduct AS Prod ON Fact.ProductKey = Prod.ProductKey
INNER JOIN DimProductSubcategory AS SubCat ON Prod.ProductSubcategoryKey = SubCat.ProductSubcategoryKey
INNER JOIN DimProductCategory AS Cat ON SubCat.ProductCategoryKey = Cat.ProductCategoryKey
WHERE Prod.EnglishProductName = @Product
GROUP BY Cat.[EnglishProductCategoryName], SubCat.[EnglishProductSubcategoryName],
Prod.EnglishProductName, Prod.Color
ORDER BY OrderDate

右键单击 Parameters 文件夹并选择 Add Parameter 选项以打开以下窗口。将 Product 命名,并将 Enter product Name 作为提示文本。

Create a Parameter

双击 CatDSet(主数据集)并转到 Filters 选项卡以添加筛选器。我们选择 Product Name 作为表达式,使用 Like 运算符。接下来,单击 ƒx 按钮,在两侧添加带有 * 运算符的参数值。这里的 * 起通配符的作用。单击 OK 关闭 Expression 和 Dataset Properties 窗口。

=“*” & Parameters!Product.Value & “*”
Expression for SSRS Report Parameters Wildcard Search

SSRS 参数通配符搜索的最终报表是。

Table Report

在报表预览中,如果我们输入 Bike,它将返回所有产品名称中包含 Bike 的行(无论其位置如何)。

Report Parameters Wildcard Search Preview

当我输入 Mountain 时,它会返回产品名称包含 Mountain 的所有行。

SSRS Report Parameters Wildcard Search Preview 2

要获取以 Bikes 结尾的产品,请将表达式更改为如下所示,然后输入 Bikes

=“*” & Parameters!Product.Value

以 Bikes 开头的产品

=Parameters!Product.Value & “*”

如果要在查询级别执行此操作,可以将参数值与两侧的 % 符号连接起来。因此,创建一个新的报表,其中包含以下 DataSet 代码和设计表格以查看预览。

SELECT Cat.[EnglishProductCategoryName] AS Category, 
SubCat.[EnglishProductSubcategoryName] AS SubCategory,
Prod.EnglishProductName AS ProductName, Prod.Color,
SUM(Fact.OrderQuantity) AS Orders, SUM(Fact.TotalProductCost) AS ProductCost,
SUM(Fact.SalesAmount) AS Sales, SUM(Fact.TaxAmt) AS Tax
FROM FactInternetSales AS Fact
INNER JOIN DimProduct AS Prod ON Fact.ProductKey = Prod.ProductKey
INNER JOIN DimProductSubcategory AS SubCat ON Prod.ProductSubcategoryKey = SubCat.ProductSubcategoryKey
INNER JOIN DimProductCategory AS Cat ON SubCat.ProductCategoryKey = Cat.ProductCategoryKey
WHERE Prod.EnglishProductName = '%' @Product + '%'
GROUP BY Cat.[EnglishProductCategoryName], SubCat.[EnglishProductSubcategoryName],
Prod.EnglishProductName, Prod.Color
ORDER BY OrderDate