2

我有 2 个表,它们都有“countyID”列

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

SELECT countyID, name, address, state
FROM TableA

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

然后,我有第二份基于以下查询的报告:

SELECT * 
FROM TableB

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

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

4

1 回答 1

2

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

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

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

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

SELECT *
FROM TableB
WHERE CountyID = @CountyID

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

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

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

于 2013-07-27T19:49:02.753 回答