Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services RB如何在表达式中使用过滤器?_Reporting Services - Fatal编程技术网

Reporting services RB如何在表达式中使用过滤器?

Reporting services RB如何在表达式中使用过滤器?,reporting-services,Reporting Services,我有一个数据集,在数据库上有一个查询“COLORS”,结果如下: |pdf |红色| |rdl |黑色| |excel |蓝色| 我的目标是根据报告的导出格式更改背景颜色。 颜色可以在数据库中更改,所以我需要它是动态的。 如果我导出到pdf,背景颜色应该变成红色。。。我可以在背景色表达式中使用如下过滤器吗?如果是,如何进行 =iif(Globals!RenderFormat.Name=Filter((Fields!Format.Value, "COLORS"),"pdf",true,???),

我有一个数据集,在数据库上有一个查询“COLORS”,结果如下:

|pdf |红色|

|rdl |黑色|

|excel |蓝色|

我的目标是根据报告的导出格式更改背景颜色。 颜色可以在数据库中更改,所以我需要它是动态的。 如果我导出到pdf,背景颜色应该变成红色。。。我可以在背景色表达式中使用如下过滤器吗?如果是,如何进行

=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,这并不总是一件小事