我们在 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) 万一 返回 结束功能”
我认为问题在于,当您手动输入表达式时,它会被计算为“类别”和“产品名称”字段的串联值,它们之间的逗号没有任何作用。这相当于在 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 期望数据集查询始终返回具有相同数据类型的相同数量的列。
如果您需要有关该方法的更多帮助,请提出新问题。