【问题标题】:SSRS Dynamic Columns DisplaySSRS 动态列显示
【发布时间】:2017-03-14 20:38:44
【问题描述】:

使用 SQL 2008R2

我需要创建一个 SSRS 报告,用户可以在其中指定返回的列和返回的顺序。动态数据和排序。

示例: 可用列 A、B、C、D、E

用户指定他们想查看:C,D,A

在数据方面没有问题,我正在使用存储过程并且可以处理这个问题。

在 SSR 方面,我看到类似的问题提到使用“矩阵”。
但是,我正在寻找有关如何在 SSRS 端处理此问题的最佳方法的意见。处理返回列的动态数量和列的动态排序的最佳方法是什么..

【问题讨论】:

  • 你能提供一些示例数据吗?
  • 这不是你想用 SSRS 走的路,考虑用 SSAS 做这样的事情。

标签: tsql reporting-services ssrs-2008-r2


【解决方案1】:

正如已经提到的,SSRS 不是解决这个问题的方法。

如果列的顺序不可自定义,那么您可以使用 SSRS 表达式处理列的可见性,但在 SSRS 中以动态顺序显示列并不容易。

对于这种事情,您可以使用 Excel 的数据透视表功能、使用 MVC 等第 3 方 .NET 解决方案或构建一些本地开发的 ASP.net 解决方案。

【讨论】:

  • 对于列自定义,我想简单地将请求的列传递给存储过程,然后在过程结束时,一旦所有数据都已处理并位于临时表中。我将使用动态 SQL 仅返回请求的列....以指定的顺序。所以我真正想要的更多的是我需要在报告上显示数据(网格 - 像?)但不一定知道哪个字段将在哪个列中。我只是不想说网格/矩阵上的 column1 是“性别”。我希望它不在乎可以显示该位置的任何内容。
【解决方案2】:

试试这个:
1.在SSRS中,创建参数ColumnA和ColumnB

  1. 创建您的数据集---不要直接输入您的查询,使用表达式(fx 按钮)

  2. 在表达式中,您可以这样编写查询:
    ="SELECT " + 参数!ColumnA.Value + "," + 参数!ColumnA.Value + " FROM Table"

你可以用同样的方法解决你的动态 ORDER BY 问题。

【讨论】:

  • 更多值得尝试的技巧(但不确定是否可行):您可以尝试使 Column 参数接受多个值。您可以将参数的可用值设置为该表中的列名,或者从查询中获取它以使其更具动态性。然后在查询表达式中使用 JOIN 函数来连接它们。像这样:JOIN(Parameters!Column.Value, ",") 祝你好运!
  • 谢谢。我现在差不多就是这么做的!所以我的单元格表达式类似于: =Fields(Split(Parameters!pRequestedColumns.Value,",")(0)).Value 其中 (0) 是所请求列的序号位置。我目前的问题是,如果我有如果我请求了 n 列,那么如果我有像上面那样设置的最大潜在列(比如说 10 个),如果我只请求可能的 10 个中的 3 个,那么我的第 4 到 10 列显示作为“#error”。我正在尝试提出一个列可见性表达式,如果没有请求,它将隐藏该列,但我目前无法弄清楚。
  • @JTSOne 我也会尝试处理列可见性设置。实际上,为什么不将所有列放入数据集中的 SELECT 语句中,并根据用户在参数中的选择设置列的可见性?除非您试图消除列数以获得更好的性能。
  • 不是为了性能。问题不仅在于我想动态返回哪些列,还在于它们的呈现顺序。我可以通过向 tablix 列的可见性添加表达式来获得解决方案。例如,在第二列中,我将此表达式放在可见性列中: =IIF((2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多