我的问题是在DataSet(exec pStoredProcedure)中执行存储过程时,SSRS会填充不同的字段供我使用。我希望对其中一个字段进行额外的查询。 DataSet 1是:
exec pInfos @SessionGUID=@SessionGUID
数据集2很简单:
select * from myTable where infoHeader is @HeaderInfo
在此查询中,@ HeaderInfo是我返回的第一个DataSet的dataField。请注意,Tablix正在扩展@HeaderInfo的数量。
将此字段作为参数并将结果放入Tablix的简单方法是什么? (注意tablix数据源是dataset1)。
答案 0 :(得分:0)
特别感谢TMNT2014的评论!
我找到了两个问题的答案:
第一个是使用Lookup,我做了
select * from myTable
然后我做了一个Lookup:
=Lookup(Field!Headerinfo, Field!infoHeader, Field!ResultValue, "myTable")
价值就像我需要的那样。我还发现通过导航到参数并添加自己的参数,您可以指定该参数的默认值(在参数设置中),然后选择数据集 - >价值领域。虽然我没有测试过这个,但我想我已经把它包括在内了。
答案 1 :(得分:0)
我发现这很难理解,而且我需要在我的第一个数据集组中运行查找,该数据集需要多个查找字段。
首先,我浪费了大量时间参数。没有任何效果。最后,我刚刚将我需要的字段作为查找集参数添加到我的数据集查询中;
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的组页脚中,我在Tablix中创建了一个表达式
=Join(LookupSet(fields!LookupKey.Value, Fields!LookupKey.Value, Fields!Comments.Value, "Comments"), vbcrlf)