根据 SSRS 报告中的列表输入创建多个表

Create Multiple Tables according to a list input in SSRS Reports

我是 SSRS 报告的新手。 我有一个 SSRS 报告,其中包含类别 ID 列表 我存储了调用 SP_GetProductsByCategory 的过程,该过程采用 categoryId

我想根据列表动态创建表格。 如果需要 3 个 ID,将使用 3 个过程调用创建 3 个表。

使用子报表很容易做到这一点。

首先创建一个接受单个 categoryId 作为参数的报告(我们称之为 singleCategory)(例如调用参数 pCategoryId)。设置报告,使其生成您需要的 table,但仅针对此单个类别。

完成后,对其进行测试并确保其按预期工作。请记住,这应该只接受一个 categoryId。

注: 我假设您的用户将从数据库驱动的参数列表中 select 类别...

接下来,创建一个新报告(例如 CategoryMasterReport)并添加一个数据集(dsCategories)以获得可供用户选择的可用类别的完整列表。这可能像 SELECT categoryId, categoryName FROM myCategoryTable.

一样简单

接下来,添加一个参数(例如pCategories)。将其设为 multi-value 参数

pCategories 参数的可用值设置为 dsCategories 数据集,并根据需要选择标签和值列。

现在创建另一个数据集,这个数据集将列出用户select编辑的所有类别。将其命名为 dsSelectedCategories 并将查询设置为类似...

SELECT categoryId 
    FROM myCategoryTable
    WHERE categoryId IN(@pCategories)

接下来,将 table 添加到您的报告中,并将其 DataSetName 属性 设置为我们刚刚创建的数据集的名称 (dsSelectedCategories)。我们只需要此 table 中的一列,因此您可以删除其余部分。您还可以删除 header 行。

在 table 的剩余文本框中,right-click 并选择“插入 ==> 子报表”。这将使用子报表占位符填充文本框。 Right-Click 子报表占位符并选择 'subreport properties'。

在常规选项卡中,将子报表设置为我们在一开始创建的子报表(例如 singleCategory)。

在参数选项卡中,单击 'Add',然后从下拉列表中选择参数名称或输入(按照前面的示例名称,这将是 pCategoryId)。对于值 属性,单击下拉菜单并选择 categoryId 字段(如果您密切关注,这可能是唯一列出的字段。

就是这样。

现在 运行 主报告 (CategoryMasterReport),select 列表中的一些类别,您应该会看到每个 selected 的 table类别。