【问题标题】:SSRS 2008 R2 Globals!RenderFormat export methodsSSRS 2008 R2 Globals!RenderFormat 导出方法
【发布时间】:2013-11-27 14:50:31
【问题描述】:

有 7 个内置选项可用于导出 SSRS 2008 报告。

我想知道在选择导出选项时是否有更简单的方法在 SSRS 中编写以下代码:

=IIF(Globals!RenderFormat.Name="WORD" OR Globals!RenderFormat.Name="XML" OR  
  Globals!RenderFormat.Name="CSV" OR Globals!RenderFormat.Name="TIFF" OR   
  Globals!RenderFormat.Name="PDF", Globals!RenderFormat.Name="MHTML" OR 
  Globals!RenderFormat.Name="EXCEL",true,false)

有没有办法编写上面的代码而不必列出列出的每个导出选项?一种包含所有导出选项的方式?如果是这样,您将如何编写该代码?

【问题讨论】:

  • 根据 ssrs 版本,有 8 种可能的格式 - 您标记问题的 SSRS 2008 包含 ATOM 提要格式。你想通过你的 IIF 表达式来完成什么?它将帮助我回答您的问题或提供更好的方法。
  • 我希望允许用户在将 SSRS 报告导出到他们想要存储数据的任何位置时隐藏标题列。我试图只让用户单击“内置”导出按钮,而不是让用户选择“隐藏/显示”选项,然后查看报告,然后点击内置导出按钮。我想保存用户导出他们想要使用的数据所需遵循的步骤数。

标签: reporting-services ssrs-2008


【解决方案1】:

由于表达式和其他报表项的处理和呈现顺序,ShellNinja 的建议不能用作可见性表达式。

TechNet 上的文章 Built-in Globals and Users References 在 RenderFormat 子标题下暗示了这一点(尽管是一个非常模糊的暗示):

Globals!RenderFormat.Name 在报告处理/呈现周期的特定部分可用。

Globals!RenderFormat.Name 在计算表达式之前不会填充,它会在当前渲染请求完成时填充,这就是为什么它不能在可见性表达式中使用但会在文本框中显示名称的原因。

Globals!RenderFormat.IsInteractive 在表达式评估之前填充,并且是在呈现报告之前隐藏/显示报告项的唯一方法。 RPL 和 HTML 被认为是完全交互的格式,所有其他格式不支持或仅支持某些交互功能。有关这方面的更多信息,请参阅 TechNet 上的文章 Comparing Interactive Functionality for Different Report Rendering Extensions

【讨论】:

  • Globals!RenderFormat.IsInteractive 对于 MHTML 格式为 True
【解决方案2】:

将“RPL”用于更简单的 IIF 表达式,以便任何其他格式为“EXCEL”、“CSV”、“WORD”等。当报表显示在报表服务器查看器或 ReportViewer 控件中时,RenderFormat 为“ RPL”。

    =IIF(Globals!RenderFormat.Name = "RPL", true, false)

设置为可见性表达式的上述代码将在 SSRS 中呈现时显示该字段并在导出时将其隐藏。

提示:当您有一个较长的 IIF 表达式时,请使用 switch 表达式 Reporting Services Expression Examples,它们迄今为止更简洁且更易于管理。

【讨论】:

  • 使用“RPL”作为参数的总体思路效果很好。谢谢!但是我将语句更改为 =IIF(Globals!RenderFormat.Name = "RPL", false, true) this 而代码运行良好。
  • 根据您的评论,您可能想在导出时隐藏。如果您需要相反的说明,则包含解释以进行澄清。无论如何,很高兴我给了你答案!
  • 我错了。你建议的工作不一致。我在visual studi0 2008 r2和测试报告服务器上尝试了 =IIF(Globals!RenderFormat.Name = "RPL", true, false) 。因此,您能建议我可以使用什么,以便代码始终有效吗?
  • 您可以通过放置一个文本框并将表达式设置为 =Globals!RenderFormat.Name 来对其进行调试,您能举例说明它何时有效,何时无效?
  • 刚刚在这里发布了一个带有字段的报表到服务器,它在VS和报表服务器中呈现为RPL。
【解决方案3】:

下面的表达式,放置在选定列的“列可见性”对话框中,仅当报表导出到 Excel 时才显示该列;否则,该列将被隐藏。

=IIF(Globals!RenderFormat.Name = "EXCELOPENXML" OR Globals!RenderFormat.Name = "EXCEL", false, true)

这是在 MSDN 本身中提到的。因此它确实有效!

【讨论】:

    猜你喜欢
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多