0

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

| PDF格式 | 红色 |

| rdl | 黑色 |

| 优秀 | 蓝色 |

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

=iif(Globals!RenderFormat.Name=Filter((Fields!Format.Value, "COLORS"),"pdf",true,???),
4

1 回答 1

2

我使用该Lookup功能做了一些工作。这仅是 2008R2 及更高版本,但您已经在查看 2008R2 及更高版本的事实Globals!RenderFormat.Name意味着这没问题。

我的第一个想法是:

=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 在服务器上运行,这并不总是微不足道的。

于 2013-11-04T14:37:15.707 回答