SSRS 2005 - 遍历报表参数

7
我希望能够循环遍历所有定义的报告参数,并构建一个显示参数名称和值的字符串。然后在报告上显示结果,以便用户知道该特定执行使用了哪些参数。唯一的问题是我无法循环遍历参数集合。Parameters集合似乎没有索引器,也没有实现IEnumerable。有人能够完成这个任务吗?我正在使用SSRS 2005,并且必须在报告代码内实现(即没有外部程序集)。谢谢!
3个回答

1

很遗憾,看起来没有简单的方法可以做到这一点。有关更多信息,请参见http://www.jameskovacs.com/blog/DiggingDeepIntoReportingServices.aspx。如果您查看该帖子的评论, 有一些解决方法可绕过此问题,但它们并不十分优雅。最简单的解决方案需要在报表代码中的某个位置具有报告参数列表,这显然违反了DRY原则,但如果您想要最简单的解决方案,可能只能接受这一点。

您可能需要重新考虑不使用外部程序集的限制,因为我认为使用外部程序集会更容易实现这个目标。或者,如果您的报表不会经常更改,您可以手动创建参数名称和值列表。


我没有意识到他的意思是在渲染报告时从其中进行。我将使用反射来查看Microsoft.ReportingServices.ReportProcessing.ReportObjectModel.Parameters内部,以查看它是否可以转换为更易访问的内容。 - Peter Wone

0

如果我理解你的问题,就像我一样操作: 在报表上放置一个文本框,然后在设置报表时插入以下内容: ="参数1:" + Parameters!Parameter.Label + ",参数2:" + Parameters!Parameter2.Label...

当然,这不是最美观的东西,但在我们的应用程序中它确实运行得很好。

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


0

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

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接