我有2个表都有“countyID”列
我有一个主报告,根据以下查询显示报告:
SELECT countyID, name, address, state
FROM TableA
---我在TableA上有一个参数集,您可以在其中选择名称以查看其报告。
然后,我根据以下查询获得第二份报告:SELECT *
FROM TableB
我想将第二个报告用作子报告,例如,当您选择顶级报告的名称时,它应该列出TableB中具有相同CountyID的所有记录。
有没有办法将countyID设置为参数,然后将其传递给子报表?这样子报表将始终只返回具有匹配的countyID的记录到主报表的当前选定记录。
答案 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中,参数具有区分大小写的烦人特征。在报告开发中尽早记住这一点总是很好。