SSRS将参数传递给子报表

时间:2013-07-26 20:20:24

标签: sql-server-2008 reporting-services parameters ssrs-2008

我有2个表都有“countyID”列

我有一个主报告,根据以下查询显示报告:

SELECT countyID, name, address, state
FROM TableA

---我在TableA上有一个参数集,您可以在其中选择名称以查看其报告。

然后,我根据以下查询获得第二份报告:

SELECT * 
FROM TableB

我想将第二个报告用作子报告,例如,当您选择顶级报告的名称时,它应该列出TableB中具有相同CountyID的所有记录。

有没有办法将countyID设置为参数,然后将其传递给子报表?这样子报表将始终只返回具有匹配的countyID的记录到主报表的当前选定记录。

1 个答案:

答案 0 :(得分:1)

我假设你已经创建了一个下拉@Name参数来加载到你用于TableA的DataSet中。您已配置此参数以从TableA DataSet的Name字段指定其值,该字段可能使用类似于以下内容的查询:

SELECT CountyID, Name, Address, State
FROM TableA
WHERE Name = @Name

然后,您需要创建另一个参数来存储该DataSet中的相关CountyID值,例如: @CountyID。将其设置为“隐藏”。对于“可用值”和“默认值”,将其指向相同的TableA数据集,但让它使用CountyID字段作为其值/标签。

然后,您需要将@CountyID参数传递到子报表中。此Tablix的DataSet应该像您概述的那样:

SELECT *
FROM TableB
WHERE CountyID = @CountyID

您确定要为此使用子报表,而不仅仅是另一个Tablix吗?原因是,如果您使用子报表,则需要打开子报表报表对象并在其上创建@CountyID参数,假设它是TableB DataSet的位置。将其设置为隐藏,但不要担心设置任何值,因为它将从主报告中收到。

最后,返回原始主报表,右键单击拖到报表正文中的子报表框,然后转到“属性”>参数>将名称设置为 CountyID ,将值设置为 [@ CountyID]

* *注意:在SSRS中,参数具有区分大小写的烦人特征。在报告开发中尽早记住这一点总是很好。