【问题标题】:Populate an SSRS Report parameter(hidden) by a sproc or user defined function通过存储过程或用户定义的函数填充 SSRS 报告参数(隐藏)
【发布时间】:2010-04-05 17:04:16
【问题描述】:

我的 SSRS 报告从我的 DATAWAREHOUSE 获取数据。

我拥有的 ASP.NET 应用程序已连接到 OLTP 数据库。

我从我的 ASP.NET 应用程序调用 SSRS 报告,并为我的报告提供一个参数作为 CustomerID(这是数据仓库中的应用程序密钥)。

由于我的报告已连接到我的数据仓库,因此我不会查询基于 OLTP 的 CustomerID 数据库的报告。相反,我使用我的数据仓库的代理键 (CustomerDimKey)。 现在,在我的报告中,我需要为我从 ASP.NET 应用程序传递的 CustomerID 参数找到正确的代理键!

我的报告已经有一个参数为@CustomerDimKey(这在所有报告存储过程中都使用)。我们将它用于测试,但现在我们将它隐藏起来,因为我们已将它与 ASP.NET 应用程序集成。

我已经在报告中添加了一个新参数 @CustomerID(这将具有 OLTP 的 CustomerID),现在它将从 ASP.NET 中获取一个值。

我需要知道一种重新使用@CustomerDimKey 报告参数的方法,该参数现在应该在请求报告后从 sql 语句或 sproc 中获取值。 基于 @CustomerID 参数包含的值。

【问题讨论】:

  • 报表数据查询中要使用存储过程还是udf?
  • 好吧,什么都行!即使是带有报告的简单 SQL 查询也可以

标签: reporting-services parameters report stored-procedures


【解决方案1】:

听起来很简单。假设您有可以查找 CustomerDimKey 的 SQL 或存储过程,只需添加一个使用 @CustomerID 参数执行此操作的数据集,然后选择该 CustomerDimKey。假设它是一个名为 LookUpCustomerDimKey 的存储过程,它接受 @CustomerID 和输出参数 @CustomerDimKey。我会像这样创建一个报告数据集:

declare @CustomerDimKey bigint

exec LookUpCustomerDimKey @CustomerID, @CustomerDimKey out

select @CustomerDimKey CustomerDimKey

然后将 CustomerDimKey 报告参数设置为 internal 并从我刚刚创建的查询中获取其默认值。现在,报表将等待提供 CustomerID,然后计算 CustomerDimKey,然后再将其用于您的其他报表数据集。

当然,它不必是存储过程。您只需确保数据集的主体生成包含键的单行结果集。它可以是一个简单的 SQL 选择或一系列 TSQL 语句或存储过程调用。您可以放入存储过程的几乎所有内容都可以放入数据集主体。它只需要最终产生一行。

【讨论】:

  • 嗨,JC,感谢您的回复!为了测试,我将 CustomerID 参数作为可见参数添加到报告中,并提供了一些有效的值列表。一旦我将 CustomerDimKey 参数设置为隐藏/内部,报表不会刷新其他参数。我拥有的唯一可选参数是我为测试目的添加的“CustomerID”。我尝试了始终刷新参数 ID 和 Key 的选项。运气不好!
  • 当您将 CustomerDimKey 设为内部时,您是否从查询中给它一个默认值?
  • 嗨,JC,以你的为例,从头开始尝试使用干净的解决方案,并完全按照你说的做!它完美无缺!感谢您的回答,将弄清楚我在实际实施中缺少什么
  • 破解了,是单行数据集问题!我错过了您示例中的最后一条 SQL 语句。
【解决方案2】:

确保在设计过程中保持参数顺序正确。

@CustomerID -- First parameter

@CustomerDimKey -- Second parameter and depends on @CustomerID for its value.

确保新数据集返回具有单个记录(值)的结果集

declare @CustomerDimKey bigint

SELECT @CustomerDimKey = CustomerDimKey FROM Datawarehouse.CustomersDimension WHERE CustomerID = @CustomerID

select @CustomerDimKey AS CustomerDimKey

【讨论】:

    猜你喜欢
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 2016-12-30
    相关资源
    最近更新 更多