我在数据库上有一个带有查询“COLORS”的数据集,结果如下:
| pdf |红色|
| rdl |黑色|
| excel |蓝色|
我的目标是根据报告的导出格式更改背景颜色。 可以在数据库中更改颜色,因此我需要它是动态的。 如果我导出为pdf,backgroundcolor应该变成红色......我可以在backgroundcolor表达式中使用Filter,如下所示吗?如果是,怎么样?
=iif(Globals!RenderFormat.Name=Filter((Fields!Format.Value, "COLORS"),"pdf",true,???),
答案 0 :(得分:2)
我使用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会将其应用于服务器上的所有报告。
This博客文章提供了有关如何使用服务器端DLL实现此功能的一些详细信息。
缺点是它很复杂,并且确实涉及在服务器上运行DLL,这并不总是微不足道。