2

我目前正在开发一个 ASP.Net WebForms 应用程序,该应用程序允许用户从列表中选择一个项目,最终使用 Report Viewer 2010(在服务器模式下)显示一个 SSRS 报告。报告已使用参数进行编码,@id以允许报告显示所选项目的正确数据。

报告数据集可以返回多行,其中一些数据显示在顶部的摘要区域(而不是标题部分)中,例如文本框将具有表达式=FIRST(Fields!Address.Value, "dsMain")。返回的数据是非规范化的,因此 Address 将始终是相同的值。这就是为什么使用FIRST()有效。其余数据显示在 Tablix 中,并应用了分组等。

但现在我希望改变这一点,以便用户可以选择多个项目,从而有效地多次显示报表,但显示在同一个报表查看器控件中。主要要求是批量打印报表,因此在一个报表视图控件中显示它对于允许一键打印所有内容非常重要。

现在因为我一开始没有设计报告,而且它的布局和执行的 sql 相当复杂;sql 是为运行一个 id 而不是它们的列表而设计的。我正在寻找不必重写报告或 sql 的选项。

是否可以将 id 参数作为列表提供给报表查看器,并让报表查看器为传递的每个 id 执行相同的报表?- 我知道报告参数可以接受多个值,但这不一样,因为报告会不明智地将第一个值传递给我的存储过程,但不会为其他值重复报告。也许报表设计器中有一个设置允许它在传递多个值时重复?

有人可以提出其他建议来使其正常工作吗?还是我唯一的选择是扩展报告和 sql 以接受多个 id 并有效地重新设计报告?

感谢任何建议或帮助。

4

1 回答 1

2

答案是使用子报表

创建一个将 id 列表作为多值参数的新报告。

将该参数用作列表控件的数据集。

在列表中有一个子报表。列表中的报告是您的原始报告。

然后,您可以将数据集的每个元素(您的参数列表)作为参数传递给您的 sub-report。SSRS 将根据您的需要重复它。

于 2012-06-21T12:14:25.130 回答