SSRS 2005 - 循环报告参数

aet 发布于 2018-05-02 parameters 最后更新 2018-05-02 18:34 213 浏览

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

已邀请:

yet

赞同来自:

不幸的是,看起来没有简单的方法来做到这一点。 有关更多信息,请参阅http://www.jameskovacs.com/blog/DiggingDeepIntoReportingServices.aspx。如果你看看comments of that post,有一些方法可以解决这个问题,但它们不是很优雅。最简单的解决方案将要求您在报告代码中的某处列出报告参数,这显然违反了DRY原则,但如果您想要最简单的解决方案,您可能只需要忍受这一点。 你可能想重新考虑一下没有外部装配的约束,因为它让我觉得用外部装配来做这件事会容易得多。或者,如果您的报告变化不大,则可以手动创建参数名称和值的列表。

tet

赞同来自:

如果我理解你的问题,那就做我的工作: 在报告上放置文本框,然后在设置报告时插入以下内容: =“Parameter1:”+ Parameters!Parameter.Label +“,Parameter2:”+ Parameters!Parameter2.Label ... 当然,这不是最漂亮的事情,但它在我们的应用程序中工作得很好。 我使用的是标签而不是值,因为我们有日期时间值,用户只关心短日期或月和年(取决于环境),而且我已经完成了设置参数的格式化工作。

qanimi

赞同来自:

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

  1. 使用网络服务。我很确定我看到了获取参数集合的API。即使没有直接访问权限,您也可以创建一个标准集合,并在一个foreach循环中将ReportParameter对象从一个对象复制到另一个对象 - 然后通过取消引用ReportParameter实例访问Count,并提供单独的参数属性。
  2. 报告是RDL。 RDL是XML。创建一个XmlDocument并加载RDL文件,然后使用DOM来完成你喜欢的任何事情,包括设置默认值或甚至重写连接字符串。
如果你的应用没有文件系统访问RDL文件,你可以通过Web服务获取它们。