Reporting services RB如何在表达式中使用过滤器?
我有一个数据集,在数据库上有一个查询“COLORS”,结果如下: |pdf |红色| |rdl |黑色| |excel |蓝色| 我的目标是根据报告的导出格式更改背景颜色。 颜色可以在数据库中更改,所以我需要它是动态的。 如果我导出到pdf,背景颜色应该变成红色。。。我可以在背景色表达式中使用如下过滤器吗?如果是,如何进行Reporting services RB如何在表达式中使用过滤器?,reporting-services,Reporting Services,我有一个数据集,在数据库上有一个查询“COLORS”,结果如下: |pdf |红色| |rdl |黑色| |excel |蓝色| 我的目标是根据报告的导出格式更改背景颜色。 颜色可以在数据库中更改,所以我需要它是动态的。 如果我导出到pdf,背景颜色应该变成红色。。。我可以在背景色表达式中使用如下过滤器吗?如果是,如何进行 =iif(Globals!RenderFormat.Name=Filter((Fields!Format.Value, "COLORS"),"pdf",true,???),
=iif(Globals!RenderFormat.Name=Filter((Fields!Format.Value, "COLORS"),"pdf",true,???),
我通过使用
Lookup
函数做了一些工作来实现这一点。这只是2008R2及以上版本,但事实上您已经看到了Globals!RenderFormat.Name
,也是2008R2及以上版本,表示这是可以的
我的第一个想法是:
=Lookup(Globals!RenderFormat.Name
, Fields!RenderFormat.Value
, Fields!Color.Value
, "Colors")
但这带来了一个错误
但是,作为一种解决方法,我在报告中设置了一个文本框来显示=Globals!RenderFormat.Name
,然后基于报表项的表达式:
=Lookup(ReportItems!Textbox1.Value
, Fields!RenderFormat.Value
, Fields!Color.Value
, "Colors")
出于某种原因,在另一个失败的地方,这种方法很有效
如果需要,可以将显示渲染格式的文本框设置为隐藏
其他选择。。。通常,对于样式设置,您使用的是已经在使用的数据库方法,并通过嵌入的报表代码或部署在服务器上的DLL来实现
仅仅在报表中嵌入代码并不能真正帮助您获得所需的动态样式,这就留下了DLL选项
这将涉及使用一些简单函数创建DLL,这些函数可以基于参数(即渲染格式全局变量)返回颜色值
这样做的优点是,只有一个代码库,因此更新DLL会将其应用于服务器上的所有报告
这篇博客文章详细介绍了如何使用服务器端DLL实现这一点
缺点是它很复杂,并且需要在服务器上运行DLL,这并不总是一件小事