在SSRS分组表达式中使用多选参数值

问题描述 投票:0回答:1

我们在 ssrs 报告中有一个多值参数“Group BY”,它的值作为数据集的可用字段名称,我想将选定的值传递给分组表达式,实现此目的的方法是什么。

当我传递“=Fields!Category.Value &”,“& Fields!ProductName.Value”时它有效但是当我传递参数值时它对我不起作用

我尝试了下面的 VB 代码并传递 =code.SamTest(Parameters!GroupBY) 作为分组表达式,但它不起作用

“公共函数 SamTest(ByVal parm 作为参数) 作为字符串 将 s 变暗为字符串

  For i as integer = 0 to parm.Count-1
      s &= "Fields!"&Cstr(parm.value(i)) &".Value & " &""","" & " 
  Next

' 删除结尾的逗号 如果 Len(s) > 0 则 s = 左(s, Len(s) - 9) 万一 返回 结束功能”

reporting-services
1个回答
0
投票

我认为问题在于,当您手动输入表达式时,它会被计算为“类别”和“产品名称”字段的串联值,它们之间的逗号没有任何作用。这相当于在 SQL 查询中执行此操作

SELECT Category, ProductName, SUM(Amount) AS Amount
    FROM myTable 
    GROUP BY CONCAT(Category, ', ', ProductName)

当您尝试构建表达式时,您所做的就是按代码生成的文字字符串进行分组,基本上就是说

GROUP BY "Fields!Category.Value, Fields!ProductName.Value"

所以它是按文字字符串分组的。

我认为您无法构建一个要按您的意图进行评估的表达式。

您可以在数据集查询中执行此操作,但这意味着使用动态 sql(总是有点狡猾),并且您必须修复从查询返回的列数(即使某些返回空值),因为 SSRS 期望数据集查询始终返回具有相同数据类型的相同数量的列。

如果您需要有关该方法的更多帮助,请提出新问题。

© www.soinside.com 2019 - 2024. All rights reserved.