在前面的博文里,我们一起研究了移动差。彼示例展示了销售数量在月份上的变化。
用户希望在此报表每一行中加入红绿灯图片,基于月和月之间销售数量的变化情况,显示红灯,黄灯或者绿灯,以使报表看起来更直观。
准备工作…
这里我们使用博文《Report Studio进阶技巧五、在括号中以红色显示移动差》中所建立的报表。在Report Studio中打开报表,并使用一个新的名字另存为一个备份。
注意:此例必须拥有Cognos administrator的权限。
1. 此例,我们首先需要创建三张对应于红绿蓝的图片。事实上,在路径{Cognos Installation}\webcontent\samples\images下已经存在我们需要的的图片了,名字分别为:red.jpg,yellow.jpg和green.jpg。但是,即便没有,我们也可以使用任何图片编辑软件自己做。或者到网络上下载。
2. 现在假定我们已经在上述路径下存在我们需要的图片了。
3. 如果使用IIS Web服务器,那么请将webcontent目录对应的虚拟路径的“Anonymous Read and Browse”权限设置为allow;
如果使用apache http server,情将wenbcontent目录对应的虚拟路径的option选项设置为all。
4. 现在打开前面备份的移动差报表。
如何实施…
1. 从“insertable objects”框体中,添加一个新的“image”对象到列表中,作为列表的一个列。
2. 转到Condition Explorer,新建一个string variable,并定义其表达式为:
if ([Query1].[Running Difference] > 0)
then ('green')
else if ([Query1].[Running Difference] < 0)
then ('red')
else ('yellow')
3. 设置此变量的名称为:Traffic,并为此变量定义3个值:red,yellow,green。
4. 回到Report Explorer,选中图片,在属性栏中,打开URL Source Variable对话框,选择Traffic变量,点击OK。
5. 从Condition Explorer中,选择‘red’condition。点击列表中的图片。
6. 在属性框中,设置URL属性为:../samples/images/red.jpg。
7. 类似的,为condition ‘yellow’和‘green’定义URL属性为:../samples/images/yellow.jpg和../samples/images/green.jpg。
8. 运行并测试报表。
工作原理…
Report Studio允许我们通过设置URL的方式向报表中添加图片。图片既可以是保存在服务器本地的,也可以是网络中其他位置的,只要图片可以被Cognos服务和网关访问即可。
在此例中,我们使用了一张已经计算出移动差的报表。因此,我们只需要定义一个条件变量用来包含所有的可能的条件。Image组件允许我们通过设置URL Source Variable的方式,为不同的条件设置不同的URL。
更多…
此例中,尽管图片的显示是“动态”的,但其实,这并不是百分之百的动态,因为我们还编辑了三个静态的URL。其实我们还可以通过设置图片URL Source的的Source Type为Report Expression,然后编辑Report Expression,来完全动态的显示图片。
下面是表达式示例:
if [Query1].[Running-Difference]>0
then '../samples/images/green.jpg'
else if [Query1].[Running-Difference]=0
then '..samples/images/yellow.jpg'
else '../samples/images/red.jpg'
此示例也可以正确的显示在PDF或者Excel输出中。如果此报表需要在不同的服务器之间移植,因为在报表中我们使用了相对路径,所以请确保目标服务器也有相同的图片路径和文件,并且web服务器的安全策略相同。