2008-09-17 118 views
7

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

回答

1

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

您可能想重新考虑一下无外部装配的约束,因为它在外观上看起来要容易得多。或者,如果您的报告变化不大,则可以手动创建参数名称和值的列表。

+0

我没有意识到他在报告中的意思。我将使用反射在Microsoft.ReportingServices.ReportProcessing.ReportObjectModel.Parameters中查看它是否可以转换为更易于访问的内容。 – 2008-09-22 13:20:37

0

如果我理解您的问题,请按照我所做的操作: 在报告中放置文本框,然后在设置报告时插入以下内容: =“Parameter1:”+ Parameters!Parameter。 Label +“,Parameter2:”+ Parameters!Parameter2.Label ...

当然,这不是最漂亮的事情,但它在我们的应用程序中工作得很好。

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

0

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

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

  2. 报告为RDL。 RDL是XML。创建一个XmlDocument并加载RDL文件,然后使用DOM去做直到并包括设置默认值或者甚至重写连接字符串。

如果您的应用程序没有文件系统访问RDL文件,您可以通过Web服务获取它们。