SSRS 2005 - 循环报告参数

时间:2008-09-17 15:03:41

标签: sql-server-2005 reporting-services parameters

我希望能够遍历报表中的所有已定义参数,并构建参数名称和值的显示字符串。然后,我将在报告上显示结果,以便用户知道哪些参数用于该特定执行。唯一的问题是我无法遍历Parameters集合。在Parameters集合中似乎没有索引器,它似乎也没有实现IEnumerable。有没有人能够做到这一点?我正在使用SSRS 2005,它必须在报告代码中实现(即,没有外部程序集)。谢谢!

3 个答案:

答案 0 :(得分:1)

不幸的是,看起来没有简单的方法可以做到这一点。 有关详细信息,请参阅http://www.jameskovacs.com/blog/DiggingDeepIntoReportingServices.aspx。如果你看一下comments of that post,有一些方法可以解决这个问题,但它们并不是很优雅。最简单的解决方案将要求您在报告代码中的某个位置列出报告参数,这显然违反了DRY原则,但如果您想要最简单的解决方案,您可能只需要接受它。

你可能想重新考虑一下没有外部装配的约束,因为它在我看来用外部装配这样做会容易得多。或者,如果您的报告不会发生太大变化,您可以手动创建参数名称和值列表。

答案 1 :(得分:0)

如果我理解你的问题,那就去做我做的事: 删除报表上的文本框,然后在设置报表时插入以下内容: =“Parameter1:”+ Parameters!Parameter.Label +“,Parameter2:”+ Parameters!Parameter2.Label ...

当然,这不是最漂亮的东西,但它在我们的应用程序中确实运行良好。

我使用标签代替值,因为我们有日期时间值,用户只关心短日期或月份和年份(取决于环境),我已经在设置中完成了格式化工作参数。

答案 2 :(得分:0)

我至少可以想到两种方法。第一个可能会起作用,第二个肯定会起作用。

  1. 使用网络服务。我很确定我看到了用于获取参数集合的API。即使没有直接访问,您也可以始终创建标准集合并在foreach循环中将ReportParameter对象从一个复制到另一个 - 然后通过取消引用ReportParameter实例来访问Count,并提供单个参数属性。

  2. 报告是RDL。 RDL是XML。创建一个XmlDocument并加载RDL文件,然后使用DOM来执行您喜欢的任何内容,包括设置默认值甚至重写连接字符串。

  3. 如果您的应用无法对RDL文件进行文件系统访问,则可以通过Web服务获取它们。