【问题标题】:SSRS Putting field from executed Dataset as Parameter to Second DatasetSSRS 将已执行数据集中的字段作为参数放入第二个数据集
【发布时间】:2014-07-29 14:58:14
【问题描述】:

我的问题是在 DataSet (exec pStoredProcedure) 中执行存储过程时,SSRS 会填充不同的字段供我使用。我希望对这些字段之一进行额外查询。 数据集 1 是:

exec pInfos @SessionGUID=@SessionGUID 

数据集 2 很简单:

select * from myTable where infoHeader is @HeaderInfo

在此查询中,@HeaderInfo 是我返回的第一个 DataSet 中的数据字段。请注意,tablix 正在扩展 @HeaderInfo 的数量。

将这个字段作为参数放入并将结果放入 tablix 的简单方法是什么? (注意 tablix 数据源是 dataset1)。

【问题讨论】:

  • 最简单且合乎逻辑的方法是让存储过程返回您需要的完整数据集。
  • @TMNT2014 不幸的是,我无法修改数据库端的存储过程。除了引用数据字段之外,还有其他方法可以保存我需要的数据集部分吗?
  • 第一部分非常简单。您需要添加一个多值 [@] HeaderInfo 参数,从第一个数据集的字段中设置值并在第二个数据集中引用它 - 从 myTable 中选择 *,其中 infoHeader 在 (@HeaderInfo)。这将为您提供所需的两个数据集。将这两个数据集结合起来会是个问题。您是否有机会使用 SSRS 2008 R2? R2 版本有一个方便的查找功能,可以轻松地将两个数据集联系在一起。

标签: sql stored-procedures reporting-services ssrs-2008 field


【解决方案1】:

特别感谢 TMNT2014 的评论!

我找到了我自己问题的两个答案:

第一个是使用 Lookup,我就是这样做的

    select * from myTable

然后我做了一个查找:

    =Lookup(Field!Headerinfo, Field!infoHeader, Field!ResultValue, "myTable")

价值是我需要的。我还发现,通过导航到参数并添加您自己的参数,您可以指定该参数的默认值(在参数设置中),然后选择数据集 -> 值字段。虽然我没有测试这个,但我想我会包含它。

【讨论】:

    【解决方案2】:

    我发现这很难理解,而且我需要在我的第一个数据集的组中运行我的查找,这需要多个查找字段。

    首先,我在参数上浪费了大量时间。没有任何效果。最后,我只是将我需要的字段作为查找集参数添加到我的数据集查询中;

    DataSet1 查询:

    Select a.c1, a.c2, a.c3, rtrim(ltrim(a.4))+'-'+convert(varchar(12), a.5, 101) as LookupKey from myTable a
    

    接下来,我将相同的密钥添加到我的第二个数据集。

    DataSet2 查询:

    Select b.c1, rtrim(ltrim(b.2))+'-'+convert(varchar(12), b3, 101) as LookupKey from myTable b
    

    现在我的两个数据集具有基于多个字段的等效查找键。或许 Lookup 和 LookupSet 有更简单的方法,但我没有立即看到它。

    在 DataSet 1 的 Group 页脚中,我在 Tablix 中创建了一个表达式

    =Join(LookupSet(fields!LookupKey.Value, Fields!LookupKey.Value, Fields!Comments.Value, "Comments"), vbcrlf)
    

    并给出以下结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      相关资源
      最近更新 更多