根据 SSRS 报告中的参数下拉值选择填充动态表列

时间:2021-02-11 04:59:28

标签: reporting-services

*场景:

我们有一个包含以下列的表格:我只需要使用这张表格

<头>
ID 帐号 状态 比较 MODFIEDUSERNAME 文件名 FILEDESP
1 A2 输入 匹配 山姆 ABC ww
2 A4 退出 匹配 xcr ww
3 A2 输入 不匹配 罗伊 ABC ww
4 A3 退出 不匹配 罗伊 xcr ww

在报告中,我们应该有一个下拉(SingleValue)用于 COMPARE 列的值(MATCH/MISMATCH),用户可以在其中选择一个值。

如果用户选择 MATCH 选项,则报告应显示包含以下列的下拉列表(MultiValue)(ReportFields 数据集): ID账户ID状态

如果用户选择 MISMATCH 选项,则报告应显示包含以下列的下拉列表(多值)(报告字段数据集): ID 比较 MODFIEDUSERNAME 文件名 FILEDESP

基本上,根据 MA​​TCH 和 MISMATCH 选择动态填充列名,当用户点击查看报告时,报告应显示相应的列数据。

我创建的数据集 -ReportFields 如下:

SELECT 1 ID, 'Id' AS ColumnName UNION
SELECT 2 ID, ACCOUNTID AS ColumnName UNION
SELECT 3 ID, 'Status' AS ColumnName UNION
SELECT 4 ID, COMPARE AS ColumnName

我创建了两个参数:@Compare 和 @ReportFields

问题: 需要根据用户从第一个下拉列表中选择的(MATCH/MISMATCH)值填充动态列的逻辑。

1 个答案:

答案 0 :(得分:0)

你的例子有点令人困惑,但我会向你展示一个典型的场景,它应该为你提供足够的信息来解决你的问题。

如果我们有一张水果和蔬菜销售表,并且我们希望用户从下拉菜单中选择水果或蔬菜,那么有一个下拉菜单,他们可以从中选择单个商品可以这样做。

桌子看起来像这样。 (为了简单起见,我在此处包含了一些销售数字,但这些数字很容易放在另一个表格中)。

<头>
类别 物品名称 金额
水果 苹果 一月 10
水果 苹果 二月 20
水果 苹果 三月 30
水果 橙色 一月 40
水果 橙色 二月 50
蔬菜 胡萝卜 一月 15
蔬菜 豌豆 一月 16
蔬菜 黄瓜 一月 17
蔬菜 胡萝卜 二月 18

我们第一个参数的数据集是

SELECT DISTINCT Category FROM myTable

这会给我们“水果”和“蔬菜” 我们将其指定为我们将调用的第一个参数的可用值 pCategory

我们的第二个数据集是

SELECT DISTINCT ItemName FROM myTable WHERE Category IN(@pCategory)

我在这里使用了 IN 以便如果 pCategory 是多值的,它会从两个类别中正确选择。

我们将此秒数据集指定为我们将调用 pItems 的秒参数的可用值。这应该是一个多值参数。我们还可以将这个相同的数据集分配给该参数的默认值,以便默认选择所有项目。

最后我们的最后一个数据集将获得一些数据以显示在表格/矩阵中,并且看起来像这样

SELECT ItemName, Month, SUM(Amount) AS SalesAmount
    FROM myTable t
    WHERE t.ItemName IN(@pItems)

注意:在数据集查询中指定参数名称时,它必须与报表设计中的参数名称完全匹配,区分大小写。