0

这是2008R2。我在数据库上有一个带有查询“DESIGN”的数据集,其导出格式的结果如下:

| pdf   | true  |
| rdl   | false |
| excel | true  |

我的目标是根据报告的导出格式更改可见性。可见性的属性可以在数据库中更改,所以我需要它是动态的。如果我导出为 pdf,则应隐藏特定的文本框或 tablix...我尝试在一个单独的文本框上查找,它为我提供了 RenderFormat。并使用了隐藏属性中的表达式。

=Lookup(ReportItems!Textbox1.Value
  , Fields!RenderFormat.Value
  , Fields!Hidden.Value
  , "DESIGN")

我还尝试使用数据库中的 1 和 0 值并将其转换为 CBool​​(...) 但它似乎是一个错误或类似的东西,因为 Textbox1 的值在呈现报告时就消失了。因此,查找不可能工作。Globals!RenderFormat.Name代替ReportItems!Textbox1.Value它也不起作用...如果您能帮助我,那就太好了!

还有一种更简单的方法...如果您知道...谢谢!

4

2 回答 2

1

找到了!!!该问题的解决方案如下:

1) 首先,我必须在 ReportBody 旁边创建一些 VB 代码:Rightklick 以打开 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 属性 Hidden 应获得以下引用代码的查找表达式:

   =Lookup(Code.rf, 
           Fields!Reporttyp.Value, 
           CBool(Fields!LegendeVersteckt.Value), "Design")

这是针对 true 和 false 为 1 和 0 的情况。现在在不同的导出格式上,它是否隐藏。:)

于 2013-11-07T12:12:04.250 回答
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)))

因为无论如何您都将拥有一个保存布尔可见性值的查询,所以这个选项可能还不错。唯一的问题是在您可能需要它的许多不同位置维护它。我建议将其存储在一个隐藏的文本框中,然后根据需要从该文本框中复制和粘贴,这样您就可以在一个地方更改功能,而不必担心拼写错误,只需一次。

在我的测试中,我发现 Render Formats 是区分大小写的,并且对于报表查看器呈现,格式名称是 RPL,而不是 rdl。

我能在正确的情况下找到的最全面的渲染格式列表如下,来自这里:http: //msdn.microsoft.com/en-us/magazine/cc188712.aspx

HTML3.2 HTML4.0 HTMLOWC MHTML 图像 EXCEL CSV PDF XML

我知道这不是您想要的,但希望它有所帮助。

于 2013-11-06T17:53:21.343 回答