*场景:
我们有一个包含以下列的表格:我只需要使用这张表格
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
基本上,根据 MATCH 和 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)值填充动态列的逻辑。
答案 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)
注意:在数据集查询中指定参数名称时,它必须与报表设计中的参数名称完全匹配,区分大小写。