这是2008R2。我有一个数据集,在数据库上有一个查询“DESIGN”,其结果是这样的导出格式:
| pdf | true |
| rdl | false |
| excel | true |
我的目标是根据报告的导出格式更改可见性。可见性的属性可以在数据库中更改,因此我需要它是动态的。如果我导出为pdf,则应隐藏特定的文本框或Tablix ...我在单独的文本框中尝试了Lookup,它给了我RenderFormat。并使用隐藏属性中的表达式。
=Lookup(ReportItems!Textbox1.Value
, Fields!RenderFormat.Value
, Fields!Hidden.Value
, "DESIGN")
我也尝试在数据库中使用1和0值并将其转换为CBool(...),但它似乎是一个bug或类似的东西,因为Textbox1的值在报表呈现时消失。所以Lookup不可能工作。
使用Globals!RenderFormat.Name
代替ReportItems!Textbox1.Value
它也无效......
如果你可以帮助我会很棒!
还有一种更简单的方法......如果你知道的话......谢谢!
答案 0 :(得分:1)
1)首先我必须创建一些VB代码:在ReportBody旁边右键单击以打开ReportProperties。应使用以下代码创建一个valuetype字符串变量:
Public Shared Dim rf as String
Public Function Setrf (ByVal var as String)
rf = var
End Function
2)应添加TextBox以填充变量。 TextBox表达式应为:
=Code.Setrf(Globals!RenderFormat.Name)
3)Tablix Propertie Hidden应该获得以下参考代码的Lookup表达式:
=Lookup(Code.rf,
Fields!Reporttyp.Value,
CBool(Fields!LegendeVersteckt.Value), "Design")
这是针对true和false为1和0的情况。现在在differen export Format上它是隐藏的还是不隐藏。 :)
答案 1 :(得分:0)
我希望这会像使用报表参数一样简单,然后可以将其输入到查询的WHERE子句中。但是,参数不允许使用Globals!RenderFormat.Name字段(我不知道为什么)。我不确定如何使用查找表达式按照您的要求撤回,但我使用以下嵌套的IIF函数根据呈现的格式切换文本框的隐藏表达式中的可见性:
=IIF(Globals!RenderFormat.Name=nothing,true,
IIF(Globals!RenderFormat.Name="EXCEL",false,
IIF(Globals!RenderFormat.Name="PDF",false,true)))
由于您将拥有一个保持布尔可见性值的单个查询,因此该选项可能并不错。唯一的问题是在您可能需要的许多不同位置维护它。我建议将它存储在一个隐藏的文本框中,然后根据需要复制和粘贴它,这样你就可以在一个地方更改功能,而不必担心错别字,只需一次。
在我的测试中,我发现渲染格式区分大小写,而对于报表查看器渲染,格式名称是RPL,而不是rdl。
我能找到的最正确的渲染格式列表如下:来自http://msdn.microsoft.com/en-us/magazine/cc188712.aspx
HTML3.2 HTML4.0 HTMLOWC MHTML 图片 EXCEL CSV PDF XML
我知道这不是你想要的,但希望它有所帮助。