SSRS 2005-遍历报表参数

时间:2020-03-05 18:59:06  来源:igfitidea点击:

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

解决方案

回答

不幸的是,似乎没有简单的方法可以做到这一点。
有关更多信息,请参见http://www.jameskovacs.com/blog/DiggingDeepIntoReportingServices.aspx。如果我们查看该帖子的评论,有一些方法可以解决此问题,但是它们不是很优雅。最简单的解决方案将要求我们在报告代码中的某个位置列出报告参数的列表,这显然违反了DRY原理,但是如果我们想要最简单的解决方案,则可能只能使用它。

我们可能需要重新考虑对没有外部装配的约束,因为在我看来,使用外部装配执行此操作会容易得多。或者,如果报告变化不大,则可以手动创建参数名称和值的列表。

回答

如果我了解问题,请执行我的操作:
在报告上放置一个文本框,然后在设置报告时,插入以下内容:
=" Parameter1:" + Parameters!Parameter.Label +",Parameter2:" + Parameters!Parameter2.Label ...

当然,这不是最漂亮的东西,但是在我们的应用程序中确实可以很好地工作。

我使用的是Labels而不是Values,因为我们有datetime值,并且用户只关心短日期或者月份和年份(取决于情况),并且我已经在设置参数时完成了格式化工作。

回答

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

  • 使用Web服务。我很确定我看到了用于获取参数集合的API。即使没有直接访问,我们也可以始终创建一个标准集合,并在foreach循环中将ReportParameter对象从一个对象复制到另一个对象,然后访问Count,并通过取消引用ReportParameter实例来使用各个参数属性。
  • 报告是RDL。 RDL是XML。创建一个XmlDocument并加载RDL文件,然后使用DOM来完成我们喜欢的所有事情,包括设置默认值甚至重写连接字符串。

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