【问题标题】:Neat way of grouping on multi-value parameter多值参数分组的简洁方式
【发布时间】:2011-11-14 09:14:02
【问题描述】:

在 SSRS 中,我有一个包含多个多值参数的报告。在其中一些上,我必须对子报表进行分组。问题是 Tablix(它提供了我需要的分组)需要一个数据集 - 而参数不是数据集..

目前,我使用连接多值参数并将其传递给 SQL 函数的数据集进行此分组。 SQL 函数然后返回一个包含多值参数值的单列表。这需要 SSRS 查询数据库,这是处理报告中已经存在的参数的一种丑陋方式。

有没有更简洁的方法来执行基于多值参数的分组?

【问题讨论】:

  • 您是否有理由不使用子报表的数据集作为 tablix 的数据集(选择多值参数),而不是在子报表中?
  • 我的子报表包含一个图表和一个矩阵。对于 mvp 中的每个选定值,需要显示图表-矩阵组合。矩阵是水平和垂直分组的。在另一个 tablix 或 -matrix 中不支持这种子分组(即使支持,它也会混淆 tablix 和矩阵的工作)

标签: sql-server reporting-services


【解决方案1】:

你可以做到这一点的一种方法,虽然它是否更整洁还有待商榷,但它是建立一个Reporting Services Data Processing Extension - 它们并不难做到,而且我建议的那个真的很简单......

要使其适用于您有固定列表的任何事物,而我只是提出一个想法,您可以创建一个看起来像这样的“查询语言”:

ParameterType=.net type&DataColumnName=Whatever the user wants&Value=first value&Value=second value...

那样,在您拆分的扩展内 & (您将定义一个规则以在 Value 条目中转义 & 等等 \& 或其他东西),然后检查您是否只有一个 ParameterType 和 DataColumnName 条目(如果 ParameterType 不存在默认为“System.String”,如果 DataColumnName 不存在,则默认为“Value”或其他值 - 如果它们被多重定义,则抛出错误),对于前者,如果设置,则使用 Type.GetType 设置列类型,而后者在结果集的“模式”中设置名称。

最后,您要做的就是遍历所有的 Value 条目并在结果集中添加一行。

这不仅适用于多值参数,而且适用于您有固定列表的任何东西,您希望将其转换为数据集,这意味着无需访问数据库或任何东西 - 处理将在 Rerporting Services 服务器上进行.

对于多值参数,您只需在报表中的查询中执行 for 循环即可生成查询。

也许,在追求整洁的过程中,您还可以创建一个方便的函数,该函数将参数作为参数并生成查询,这样您就有了一个共享库和一个数据处理扩展,并且所有创建报告的人都需要to do 是这样的(我认为那将是一个五线函数):

=MultiValueQuery.GenerateQuery(Parameters!MyMultiValueParameter)

整洁,也许,你是评委!

【讨论】:

    猜你喜欢
    • 2012-02-09
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    相关资源
    最近更新 更多