SSRS 2008 R2 Globals!RenderFormat导出方法

4

SSRS 2008内置了7个导出选项。

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

=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 feed格式。你通过IIF表达式想要实现什么目标?这将帮助我回答你的问题或提供更好的方法。 - ShellNinja
我想允许用户在将SSRS报告导出到存储数据的任何位置时隐藏标题列。我正在尝试仅要求用户点击“内置”导出按钮,而不是使用户选择“隐藏/显示”选项,然后查看报告并点击内置导出按钮。我希望减少用户需要遵循的步骤,以导出他们想要使用的数据。 - user1816979
3个回答

11
ShellNinja的建议不能作为可见性表达式,因为表达式和其他报表项的处理和渲染顺序不同。TechNet上的文章内置全局变量和用户引用在RenderFormat子标题下暗示了这一点(尽管是非常模糊的提示),其中提到:Globals!RenderFormat.Name在报表处理/渲染周期的特定部分可用。在表达式被评估之前,Globals!RenderFormat.Name没有填充,它会在当前渲染请求完成时填充,这就是为什么它不能用于可见性表达式,但可以在文本框中显示名称。

Globals!RenderFormat.IsInteractive在表达式评估之前就被填充,并且是在报告呈现之前隐藏/显示报告项的唯一方式。RPL和HTML被认为是完全交互式的格式,所有其他格式都不是或仅支持一些交互式功能。有关更多信息,请参阅TechNet上的文章比较不同报告呈现扩展的交互功能


1
Globals!RenderFormat.IsInteractive对于MHTML格式为True。 - nee21

4

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

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

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

提示:当您有一个较长的IIF表达式时,请使用Reporting Services表达式示例,它们要干净得多且更易于管理。


使用“RPL”作为参数的一般想法非常好。谢谢!但是,我将语句更改为=IIF(Globals!RenderFormat.Name =“RPL”,false,true),代码也可以正常工作。 - user1816979
你可能希望根据你的评论在导出时隐藏。解释是为了澄清,以防你需要相反的操作。无论如何,很高兴我能给你答案! - ShellNinja
我犯了错误。你建议的方法不一致。我在Visual Studio 2008 R2和测试报告服务器上尝试了=IIF(Globals!RenderFormat.Name = "RPL", true, false)。因此,你能否建议我使用什么代码可以始终正常工作? - user1816979
我将尝试你的建议,即使用“标志(flag)”功能来解决问题。你可以通过在页面中插入文本框并设置表达式为=Globals!RenderFormat.Name 来调试,看看出了什么问题。 - user1816979
通过将表达式添加到可见性属性中,更改可见性标头以隐藏任何内容(页面等)。 - ShellNinja
显示剩余4条评论

2
在所选列的“列可见性”对话框中放置下面的表达式,仅在报表导出到Excel时显示该列;否则,该列将被隐藏。
=IIF(Globals!RenderFormat.Name = "EXCELOPENXML" OR Globals!RenderFormat.Name = "EXCEL", false, true)

这在MSDN中已经提到了。因此它是有效的!

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